[JavaScript] 常用的匹配身份证js正则表达式 →→→→→进入此内容的聊天室

来自 , 2021-03-31, 写在 JavaScript, 查看 124 次.
URL http://www.code666.cn/view/4c5bde74
  1. 匹配身份证  
  2.  
  3. 先说说网上流传的版本:  
  4. \d{15}|\d{18}  
  5. d{15}  
  6. \d{18}  可以判断,但是有些粗糙  
  7.  
  8. 从身份证可以解析出地址、生日、性别等,因此特别说明一下:  
  9.    身份证规则  
  10. 中国的身份证为15位(一代)或18位(二代),区别在于二代证只是在一代证的第七位数字前加了19和在末尾加了一位验证码  
  11.    将15位升级为18位,并解析18位号码构成(地址、生日、性别)  
  12.  
  13. 代码如下:  
  14. function parseID(ID) {  
  15.     if ( ID.length == 15 ) {  
  16.         // 升级为18位  
  17.         ID = ID.substr( 0, 6 ) + "19" + ID.substr( 6 );  
  18.         // 前17位对应的系数  
  19.         var rank = [  
  20.                 "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"  
  21.         ];  
  22.         // 前17为加权除以17后的余数对应的最后一位身份证号码  
  23.         var last = [  
  24.                 "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"  
  25.         ];  
  26.         // 加权和  
  27.         for ( var i = 0, sum = 0, len = ID.length; i < len; i++)  
  28.             sum += ID[ i ] * rank[ i ];  
  29.         // 加上最后一位  
  30.         ID += last[ sum % 11 ];  
  31.     }  
  32.     if ( ID.length != 18 ) return null;  
  33.  
  34.     var match = rid.exec( ID );  
  35.     return match ? {  
  36.         ID : ID,  
  37.         area : match[ 1 ],  
  38.         y : match[ 2 ],  
  39.         m : match[ 3 ],  
  40.         d : match[ 4 ],  
  41.         sex : match[ 5 ] % 2  
  42.     } : null;  
  43. }  
  44.  
  45. 限制:  
  46.    这里只是解析出了地址代码,如何将代码转换为实际地址请问度娘。  
  47.    返回对象中的sex为1(男)或0(女),并未做转换,如果页面显示需要,可以这样转换:sex ? "男" : "女"  
  48.  
  49. 测试:  
  50. console.info( parseID( "142327840821047" ) );  
  51. console.info( parseID("142327198408210470" ) );  

回复 "常用的匹配身份证js正则表达式"

这儿你可以回复上面这条便签

captcha