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. 转:ffmpeg time_base详解

    ffmpeg time_base详解 https://my.oschina.net/u/3054677/blog/866368

  2. [Git] Undo a commit that has already been pushed to the remote repository

    If we pushed our changes already to the remote repository we have to pay attention to not change the ...

  3. 史上最全面的Buffalo WHR-G300N CH v2 刷OpenWrt教程

    Buffalo WHR-G300N CH v2 刷OpenWrt.有两种办法.一种是Windows下刷.一种是在linux下使用tftp刷.Buffalo WHR-G300N-CH v2的openwr ...

  4. 【Android界面实现】使用PagerTabStrip实现有滑动标签的Viewpager

    在ViewPager这样的能够滑动的控件上,总是有非常多的文章能够做.上次的文章,我们实现了一个自己定义的ViewPager的指示器,这篇文章,我们主要是想利用Android自带的控件,实现一个指示器 ...

  5. jstat 使用日志

    如何判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序. Jstat是JDK自带的一个 ...

  6. 算法笔记_213:第七届蓝桥杯软件类决赛部分真题(Java语言C组)

    目录 1 平方末尾 2 七星填数 3 打印数字 4 赢球票 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 平方末尾 平方末尾 能够表示为某个整数的平方的数字称为“平方数” 比如,25,64 虽然无 ...

  7. python binascii模块详解

    ['Error', 'Incomplete', 'b2a_hex', 'hexlify' #Hexadecimal representation of binary data. 字符串转16进制'a2 ...

  8. zip 文件下载函数封装

    代码: export default { /** * 下载文件 */ exportFile: (fileUrl) => { if (fileUrl) { let exportFrame = do ...

  9. bootstrap设计站点中加入代码高亮插件

    这款插件的名字叫做google-code-prettify 使用该插件之前的效果: 使用插件之后的效果: 接下来说步骤: (1)下载两个文件 http://codecloud.sinaapp.com/ ...

  10. SpringMVC学习笔记六:使用Formatter解析或格式化数据

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6832903.html      Converter可以将一种类型转换成另一种类型,是任意Object之间的类型 ...