js正则表达式验证身份证号
时间: 2024-12-01 18:19:46 浏览: 12
在JavaScript中,你可以使用正则表达式来验证中国大陆的身份证号码(15位或18位)。下面是一个基本的验证规则示例:
```javascript
function validateIdCard(id) {
var regex = /^(^\d{15}$|^\d{18}(\d|X|x))$/; // 匹配15位数字或18位数字加校验码(X/x)
if (!regex.test(id)) {
return false;
}
// 对于18位号码,需要进一步检查校验码
if (id.length === 18) {
var sum = 0;
var weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
for (var i = 0; i < 17; i++) {
sum += parseInt(id.charAt(i), 10) * weight[i];
}
var lastDigit = parseInt((sum % 11 > 10 ? 11 : sum % 11).toString(), 10);
if (lastDigit !== parseInt(id.charAt(17), 10)) {
return false;
}
}
return true;
}
```
这个函数首先判断身份证号码是否符合长度和基本格式,然后对18位号码进行校验码验证。如果所有条件都满足,那么返回true,表示有效;否则返回false。
阅读全文