写一个验证身份证号有效性的JS代码
时间: 2023-09-16 08:05:36 浏览: 217
### 回答1:
以下是验证身份证号码有效性的 JavaScript 代码:
```
function isValidID(id) {
// 先判断身份证号码长度是否符合要求
if (id.length !== 18) {
return false;
}
// 定义身份证号码前17位的权值
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;
// 计算前17位的校验和
for (var i = 0; i < 17; i++) {
sum += parseInt(id[i]) * weight[i];
}
// 取校验和除以11的余数
var remainder = sum % 11;
// 判断校验码是否符合要求
if (checkCode[remainder] !== id[17].toUpperCase()) {
return false;
}
// 身份证号码校验通过
return true;
}
```
使用方法:
```
var id = '430426199803024336';
var result = isValidID(id);
console.log(result); // 输出 true
```
### 回答2:
下面是一个简单的用 JavaScript 编写的身份证号有效性验证代码:
```javascript
function validateIdCard(idCard) {
if (!idCard || typeof idCard !== 'string') {
return false;
}
// 验证身份证号长度
if (idCard.length !== 18) {
return false;
}
// 验证前17位是否为数字
if (!/^\d{17}$/.test(idCard.substr(0, 17))) {
return false;
}
// 验证最后一位校验码
var num = idCard.toUpperCase().split('');
var factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var checkCodeMap = {
'0': '1', '1': '0', '2': 'X', '3': '9', '4': '8',
'5': '7', '6': '6', '7': '5', '8': '4', '9': '3', '10': '2'
};
var sum = 0;
for (var i = 0; i < 17; i++) {
sum += num[i] * factors[i];
}
var checkCode = sum % 11;
if (checkCodeMap[checkCode] !== num[17]) {
return false;
}
return true;
}
// 测试
var idCard1 = "110101199001011234";
console.log(validateIdCard(idCard1)); // true
var idCard2 = "11010119900101123X";
console.log(validateIdCard(idCard2)); // true
var idCard3 = "110101199001011235";
console.log(validateIdCard(idCard3)); // false
```
上述代码实现了一个函数 `validateIdCard`,它接受一个身份证号作为参数。该函数首先进行一系列简单的校验,如长度和前17位是否为数字。然后使用权重因子和校验码对身份证号进行校验。校验结果为 `true` 表示身份证号有效,为 `false` 表示无效。
实际使用时,可以将身份证号作为参数传递给 `validateIdCard` 函数。你可以尝试不同的身份证号来进行测试。
阅读全文