你好 js正则验证身份证号码
时间: 2023-07-17 07:55:04 浏览: 51
你好,以下是一个简单的 JavaScript 正则表达式用于验证身份证号码:
```javascript
function validateIDCard(idCard) {
// 18位身份证号码的正则表达式
var reg = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/;
// 如果是15位身份证号码,则先转换为18位再进行校验
if (idCard.length === 15) {
var arr = idCard.split("");
var year = arr[6] + arr[7];
var month = arr[8] + arr[9];
var day = arr[10] + arr[11];
var birthday = "19" + year + "-" + month + "-" + day;
return validateIDCard(birthday + arr.splice(0, 6).join("") + "x");
}
// 检验格式是否正确
if (!reg.test(idCard)) {
return false;
}
// 检验校验位是否正确
var idArr = idCard.split("");
var S = (parseInt(idArr[0]) + parseInt(idArr[10])) * 7 +
(parseInt(idArr[1]) + parseInt(idArr[11])) * 9 +
(parseInt(idArr[2]) + parseInt(idArr[12])) * 10 +
(parseInt(idArr[3]) + parseInt(idArr[13])) * 5 +
(parseInt(idArr[4]) + parseInt(idArr[14])) * 8 +
(parseInt(idArr[5]) + parseInt(idArr[15])) * 4 +
(parseInt(idArr[6]) + parseInt(idArr[16])) * 2 +
parseInt(idArr[7]) * 1 + parseInt(idArr[8]) * 6 +
parseInt(idArr[9]) * 3;
var Y = S % 11;
var JYM = "10X98765432";
var M = JYM.charAt(Y);
if (M === idArr[17].toUpperCase()) {
return true;
} else {
return false;
}
}
```
这个函数可以接受一个身份证号码作为参数,如果该身份证号码格式正确并且校验位正确,则返回 true,否则返回 false。