在JavaScript中验证身份证号码通常涉及到正则表达式和一些逻辑判断。以下是一个简单的示例代码,用于验证中国大陆的身份证号码:
function validateIDCard(idCard) {
// 身份证号码的正则表达式
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
// 如果身份证号码匹配正则表达式,则返回true
if (reg.test(idCard)) {
// 进一步验证18位身份证号码的校验码
if (idCard.length === 18) {
var weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 加权因子
var checkCode = ['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)) * weight[i];
}
var mod = sum % 11;
var lastChar = idCard.charAt(17).toUpperCase();
if (checkCode[mod] !== lastChar) {
return false;
}
}
return true;
} else {
return false;
}
}
// 使用示例
console.log(validateIDCard('11010519491231002X')); // 应该返回 true
console.log(validateIDCard('110105194912310021')); // 应该返回 false
X
,需要统一转换为大写进行比较。通过上述方法,可以有效地在JavaScript中验证身份证号码的合法性。
领取专属 10元无门槛券
手把手带您无忧上云