首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[方法]检验18位身份证号码

发布于 2024-06-07 20:59:50
0
345


/** 
 * 检验18位身份证号码(15位号码可以只检测生日是否正确即可) 
 *  idCardValue  18位身份证号 
 * @returns 匹配返回true 不匹配返回false 
 */
function idCardVildate(cid) { 
    var arrExp = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];// 加权因子 
    var arrValid = [ 1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2 ];// 校验码 
    var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; 
    if (reg.test(cid)) { 
        var sum = 0, idx; 
        for (var i = 0; i < cid.length - 1; i++) { 
           // 对前17位数字与权值乘积求和 
           sum += parseInt(cid.substr(i, 1), 10) * arrExp[i]; 
         } 
         // 计算模(固定算法) 
        idx = sum % 11; 
        // 检验第18为是否与校验码相等 
       return arrValid[idx] == cid.substr(17, 1).toUpperCase(); 
    } else { 
       return false; 
    } 
} 
评论
一个月内的热帖推荐
道亮_(:з」∠)_
Lv.1管理员

404

帖子

30

小组

2177

积分

赞助商广告
站长交流