以下是身份证正则表达式(18位)的JavaScript代码:

function isIdCardNo(num) {
    //身份证号码18位,最后一位可能是数字或字母X
    var reg = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/;
    if (reg.test(num) === false) {
        return false;
    }

    //将身份证号码前17位分别乘上不同的系数
    var powers = [
        7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2
    ];
    var sum = 0;
    for (var i = 0; i < 17; i++) {
        sum += num.charAt(i) * powers[i];
    }

    //根据加权和计算校验码
    var codes = [
        '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'
    ];
    var code = codes[sum % 11];

    //比较校验码和身份证号码最后一位
    return num.charAt(17) === code;
}

使用方法:

console.log(isIdCardNo("110101199003073993")); // true
console.log(isIdCardNo("11010119900307399X")); // true
console.log(isIdCardNo("11010119900307399Y")); // false
``

原文地址: https://www.cveoy.top/t/topic/fEBB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录