【无标题】

js校验身份证号

function validateIDCard(idCard) {
    // 校验身份证号码的长度和格式
    var pattern = /^[1-9]\d{5}(19|20)\d{2}(0\d|1[0-2])(0\d|1\d|2\d|3[01])\d{3}[\dX]$/;
    if (!pattern.test(idCard)) {
        return false;
    }

    // 校验身份证号码的校验位
    var provinceCode = idCard.substring(0, 2);
    var birthday = idCard.substring(6, 14);
    var checkCode = idCard.substring(17);

    // 校验省份代码
    if (!checkProvinceCode(provinceCode)) {
        return false;
    }

    // 校验生日
    if (!checkBirthday(birthday)) {
        return false;
    }

    // 校验校验位
    if (!checkCheckCode(idCard)) {
        return false;
    }

    return true;
}

// 校验省份代码
function checkProvinceCode(provinceCode) {
    // 省份代码参考,根据实际情况自行添加
    var provinceCodes = ["11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82", "91"];

    return provinceCodes.includes(provinceCode);
}

// 校验生日
function checkBirthday(birthday) {
    var year = parseInt(birthday.substring(0, 4));
    var month = parseInt(birthday.substring(4, 6));
    var day = parseInt(birthday.substring(6, 8));

    var date = new Date(year, month - 1, day);

    return (date.getFullYear() === year && (date.getMonth() + 1) === month && date.getDate() === day);
}

// 校验校验位
function checkCheckCode(idCard) {
    var factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    var checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

    var sum = 0;
    for (var i = 0; i < 17; i++) {
        sum += parseInt(idCard.charAt(i)) * factors[i];
    }

    var index = sum % 11;
    var checkCode = checkCodes[index];

    return (checkCode === idCard.charAt(17));
}

// 测试示例
console.log(validateIDCard("440524199801010014")); // false,校验位错误
console.log(validateIDCard("44052419980101001X")); // true
console.log(validateIDCard("44052419980101001x")); // true
console.log(validateIDCard("44052419980101001")); // true
console.log(validateIDCard("4405241998010100")); // false,长度不正确
console.log(validateIDCard("440524199801010011")); // false,长度不正确```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值