js身份证号校验正则计算
时间: 2024-09-26 21:10:10 浏览: 44
在JavaScript中,用于身份证号码校验的正则表达式通常会检查身份证号码的格式是否正确。中国的身份证号码由18位数字组成,分为前6位地区码、接下来8位出生日期码、然后3位顺序码和最后一位校验码。校验码的计算涉及到了数学公式,这里是一个简单的校验规则:
- 偶数位(包括第18位)乘以2,奇数位不变。
- 将所有数值相加,得到总和。
- 对总和取模11(余数),如果余数等于10,则第18位校验码为X;如果余数小于10,校验码就是那个余数。
下面是一个简单的正则表达式用于匹配格式,以及一个函数用于校验:
```javascript
const idCardRegex = /^(^\d{15}$|^\d{18}(\d|X|x))$/; // 匹配15位和18位数字,且允许校验码X
function validateIdCard(id) {
if (!idCardRegex.test(id)) {
return false;
}
const sumEven = parseInt(id.slice(-2), 10) * 2 + ... // 偶数位相加
const sumOdd = parseInt(id.slice(0, -2), 10); // 奇数位不变
const totalSum = sumEven + sumOdd;
const checkCode = (totalSum % 11 > 1) ? 11 : totalSum % 11;
return id.charAt(id.length - 1).toUpperCase() === 'X' || checkCode.toString() === id.charAt(id.length - 1);
}
// 示例:
let isValid = validateIdCard('123456789012345678'); // true 或 false
```
阅读全文