1. var idCardNoUtil = {
  2. provinceAndCitys: {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"},
  3. powers: ["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],parityBit: ["1","0","X","9","8","7","6","5","4","3","2"],genders: {male:"男",female:"女"},
  4. checkAddressCode: function(addressCode) {
  5. var check = /^[1-9]\d{5}$/.test(addressCode);
  6. if(!check) return false;
  7. if(idCardNoUtil.provinceAndCitys[parseInt(addressCode.substring(0,2))]){
  8. return true;
  9. } else {
  10. return false;
  11. }
  12. },
  13. checkBirthDayCode: function(birDayCode){
  14. var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
  15. if(!check) return false;
  16. var yyyy = parseInt(birDayCode.substring(0,4),10);
  17. var mm = parseInt(birDayCode.substring(4,6),10);
  18. var dd = parseInt(birDayCode.substring(6),10);
  19. var xdata = new Date(yyyy,mm-1,dd);
  20. if(xdata > new Date()){
  21. return false;//生日不能大于当前日期
  22. }else if ( ( xdata.getFullYear() == yyyy ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == dd ) ){
  23. return true;
  24. }else{
  25. return false;
  26. }
  27. },
  28. getParityBit: function(idCardNo){
  29. var id17 = idCardNo.substring(0,17);
  30. var power = 0;
  31. for(var i=0;i<17;i++){
  32. power += parseInt(id17.charAt(i),10) * parseInt(idCardNoUtil.powers[i]);
  33. }
  34. var mod = power % 11;
  35. return idCardNoUtil.parityBit[mod];
  36. },
  37. checkParityBit: function(idCardNo){
  38. var parityBit = idCardNo.charAt(17).toUpperCase();
  39. if(idCardNoUtil.getParityBit(idCardNo) == parityBit){
  40. return true;
  41. }else{
  42. return false;
  43. }
  44. },
  45. checkIdCardNo: function(idCardNo){
  46. //15位和18位身份证号码的基本校验
  47. var check = /^[0-9]{15}|([0-9]{17}([0-9]|x|X))$/.test(idCardNo);
  48. if(!check) return false;
  49. //判断长度为15位或18位
  50. if(idCardNo.length==15){
  51. return idCardNoUtil.check15IdCardNo(idCardNo);
  52. }else if(idCardNo.length==18){
  53. return idCardNoUtil.check18IdCardNo(idCardNo);
  54. }else{
  55. return false;
  56. }
  57. },
  58. //校验15位的身份证号码
  59. check15IdCardNo: function(idCardNo){
  60. //15位身份证号码的基本校验
  61. //在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
  62. var check = /^[1-9][0-9]{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))[0-9]{3}$/.test(idCardNo);
  63. if(!check) return false;
  64. //校验地址码
  65. var addressCode = idCardNo.substring(0,6);
  66. check = idCardNoUtil.checkAddressCode(addressCode);
  67. if(!check) return false;
  68. var birDayCode = '19' + idCardNo.substring(6,12);
  69. //校验日期码
  70. return idCardNoUtil.checkBirthDayCode(birDayCode);
  71. },
  72. //校验18位的身份证号码
  73. check18IdCardNo: function(idCardNo){
  74. //18位身份证号码的基本格式校验
  75. //在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
  76. var objReg = /^[1-9][0-9]{5}[1-9][0-9]{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))[0-9]{3}([0-9]|x|X)$/i;
  77. var check = objReg.test(idCardNo);
  78. if(!check) return false;
  79. //校验地址码
  80. var addressCode = idCardNo.substring(0,6);
  81. check = idCardNoUtil.checkAddressCode(addressCode);
  82. if(!check) return false;
  83. //校验日期码
  84. var birDayCode = idCardNo.substring(6,14);
  85. check = idCardNoUtil.checkBirthDayCode(birDayCode);
  86. if(!check) return false;
  87. //验证校检码
  88. return idCardNoUtil.checkParityBit(idCardNo);
  89. },
  90. formateDateCN: function(day){
  91. var yyyy =day.substring(0,4);
  92. var mm = day.substring(4,6);
  93. var dd = day.substring(6);
  94. return yyyy + '-' + mm +'-' + dd;
  95. },
  96. //获取信息
  97. getIdCardInfo: function(idCardNo){
  98. var idCardInfo = {
  99. gender:"", //性别
  100. birthday:"" // 出生日期(yyyy-mm-dd)
  101. };
  102. if(idCardNo.length==15){
  103. var aday = '19' + idCardNo.substring(6,12);
  104. idCardInfo.birthday=idCardNoUtil.formateDateCN(aday);
  105. if(parseInt(idCardNo.charAt(14))%2==0){
  106. idCardInfo.gender=idCardNoUtil.genders.female;
  107. }else{
  108. idCardInfo.gender=idCardNoUtil.genders.male;
  109. }
  110. }else if(idCardNo.length==18){
  111. var aday = idCardNo.substring(6,14);
  112. idCardInfo.birthday=idCardNoUtil.formateDateCN(aday);
  113. if(parseInt(idCardNo.charAt(16))%2==0){
  114. idCardInfo.gender=idCardNoUtil.genders.female;
  115. }else{
  116. idCardInfo.gender=idCardNoUtil.genders.male;
  117. }
  118. }
  119. return idCardInfo;
  120. },
  121. getId15:function(idCardNo){
  122. if(idCardNo.length==15){
  123. return idCardNo;
  124. }else if(idCardNo.length==18){
  125. return idCardNo.substring(0,6) + idCardNo.substring(8,17);
  126. }else{
  127. return null;
  128. }
  129. },
  130. getId18: function(idCardNo){
  131. if(idCardNo.length==15){
  132. var id17 = idCardNo.substring(0,6) + '19' + idCardNo.substring(6);
  133. var parityBit = idCardNoUtil.getParityBit(id17);
  134. return id17 + parityBit;
  135. }else if(idCardNo.length==18){
  136. return idCardNo;
  137. }else{
  138. return null;
  139. }
  140. }
  141. };
  142. //验证护照是否正确
  143. function checknumber(number){
  144. var str=number;
  145. //在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
  146. var Expression=/(P\d{7})|(G\d{8})/;
  147. var objExp=new RegExp(Expression);
  148. if(objExp.test(str)==true){
  149. return true;
  150. }else{
  151. return false;
  152. }
  153. };

身份证 /(^\d{15}$)|(^\d{17}([0-9]|X)$)/
  
  护照 /^[a-zA-Z0-9]{3,21}$/   /^(P\d{7})|(G\d{8})$/
  
  军官证或士兵证 /^[a-zA-Z0-9]{7,21}$/
  
  港澳回归证 和 台胞证/^[a-zA-Z0-9]{5,21}$/
  
  出生证 /^[a-zA-Z0-9]{5,21}$/
  
  户口本 /^[a-zA-Z0-9]{3,21}$/

js验证身份证类的更多相关文章

  1. js验证身份证号,超准确

    js验证身份证号,超准确 看程序前先来了解下身份证号的构成:身份证号分为两种,旧的为15位,新的为18位.身份证15位编码规则:dddddd yymmdd xx p    其中 dddddd:地区码  ...

  2. Js完美验证15/18身份证,Js验证身份证,支持15/18位

    Js完美验证15/18身份证,Js验证身份证,支持15/18位 >>>>>>>>>>>>>>>>> ...

  3. JS验证身份证

    话不多说,直接看代码 JS部分 /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * ...

  4. JS验证身份证的合法性

    //验证身份证的合法性 function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:&quo ...

  5. js验证身份证号码是否合规

    需求:最近要做实名验证的功能,但是验证身份证号码和身份证图片的接口不想短信,比较贵,所以之前我们要验证严谨一点,参考了网上关于验证身份证号码的代码,总结一下 代码: //验证身份证号码 functio ...

  6. js验证身份证格式

    (function(){ Validate={ data:{ // 加权因子 Wi : [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ...

  7. JS验证身份证号码合法性

    <html><head><script type="text/javascript">    function validateCard(){  ...

  8. js验证身份证号

    /* * 身份证检测(格式.地区.生日.年龄范围) * code:检测字符串 rangeAge:年龄范围[格式为:25-55] * 返回值 0:为空 ,不为0则验证不通过 */ : : : : : : ...

  9. js验证身份证号码

    function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北",1 ...

随机推荐

  1. 在使用Vs2013打开Vs2008的解决方案时出现了以下错误:此版本的应用程序不支持其项目类型(.csproj)

    在使用Vs2013打开Vs2008的解决方案时出现了以下错误: 无法打开 因为此版本的应用程序不支持其项目类型(.csproj). 在网络上找到解决方案: 命令行或者Vs自带的命令提示符输入:deve ...

  2. 用Telnet测试服务器的端口是否开通

      可以用telnet测试远程服务器的端口是否开通,格式如下: telnet <server name> <port number> 例如: Telnet tserv 3389 ...

  3. PHP Manager for IIS

    SOAP error on IIS8 Registering new PHP version sets bad values set for FastCGI activityTimeout, requ ...

  4. jquery旋转图片

    今天介绍一款 jQuery 插件——jqueryrotate,它可以实现旋转效果.jqueryrotate 支持所有主流浏览器,包括 IE6.如果你想在低版本的 IE 中实现旋转效果,那么 jquer ...

  5. (算法)AA制

    题目: A.B.C.D四个人去吃大餐,吃饭去说好,付钱时AA制,但最后结账时,因为4个人带的钱不一样多,最后A付了112元,B付了86元,C付了10元,D没带钱,所以没有付: 但AA制需要平摊餐费,所 ...

  6. Android 基本 Jackson Marshalling(serialize)/Unmarshalling(deserialize)

    本文内容 基本 Jack Marshalling 忽略属性 忽略 Null 字段 改变字段名字 基本 Jackson Marshalling 把 JSON 解析成 JsonNode Unmarshal ...

  7. python网络爬虫 - 设定重试次数内反复抓取

    import urllib.request def download(url, num_retries=2): print('Downloading:', url) try: html = urlli ...

  8. Asp.Net 之 禁用TextBox的记忆功能

    IE提供了一个自动完成功能可以记忆我们的输入内容(如登录帐号等),方便下一次快速地录入类似资料.这确实是一个非常友好的功能,在操作时只需用鼠标双击文本框或输入前几个字符,系统会自动列出以前的录入历史供 ...

  9. Mysql官方文档中争对安全添加列的处理方法。Mysql Add a Column to a table if not exists

    Add a Column to a table if not exists MySQL allows you to create a table if it does not exist, but d ...

  10. hadoop 文件合并

    来自:http://blog.csdn.net/dandingyy/article/details/7490046 众所周知,Hadoop对处理单个大文件比处理多个小文件更有效率,另外单个文件也非常占 ...