• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

javascript 海叔叔 6个月前 (12-13) 22次浏览 已收录 0个评论

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

关键词:js,身份证正则表达式
匹配身份证

先说说网上流传的版本:
\d{15}|\d{18}
d{15}
\d{18} 可以判断,但是有些粗糙

从身份证可以解析出地址、生日、性别等,因此特别说明一下:
身份证规则
中国的身份证为15位(一代)或18位(二代),区别在于二代证只是在一代证的第七位数字前加了19和在末尾加了一位验证码
将15位升级为18位,并解析18位号码构成(地址、生日、性别)

代码如下

function parseID(ID) { 
    if ( ID.length == 15 ) { 
        // 升级为18位 
        ID = ID.substr( 0, 6 ) + "19" + ID.substr( 6 ); 
        // 前17位对应的系数 
        var rank = [ 
                "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2" 
        ]; 
        // 前17为加权除以17后的余数对应的最后一位身份证号码 
        var last = [ 
                "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" 
        ]; 
        // 加权和 
        for ( var i = 0, sum = 0, len = ID.length; i < len; i++) 
            sum += ID[ i ] * rank[ i ]; 
        // 加上最后一位 
        ID += last[ sum % 11 ]; 
    } 
    if ( ID.length != 18 ) return null; 
   
    var match = rid.exec( ID ); 
    return match ? { 
        ID : ID, 
        area : match[ 1 ], 
        y : match[ 2 ], 
        m : match[ 3 ], 
        d : match[ 4 ], 
        sex : match[ 5 ] % 2 
    } : null; 
} 

来源搞代码网《常用的匹配身份证js正则表达式》http://www.gaodaima.com/68562.html
限制:
 这里只是解析出了地址代码,如何将代码转换为实际地址请问度娘。
 返回对象中的sex为1(男)或0(女),并未做转换,如果页面显示需要,可以这样转换:sex ? “男” : “女”

测试:
console.info( parseID( “142327840821047” ) );
console.info( parseID(“142327198408210470” ) );


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址