用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...