用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - javascript代码库

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

2014-02-03 作者: 小蜜锋举报

[javascript]代码库

匹配身份证  
  
先说说网上流传的版本:  
\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;  
}  

限制:  
   这里只是解析出了地址代码,如何将代码转换为实际地址请问度娘。  
   返回对象中的sex为1(男)或0(女),并未做转换,如果页面显示需要,可以这样转换:sex ? "男" : "女"   

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


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...