在表单的校验脚本中:
```
var tip = "身份证号格式不正确";
var idCard = this.data[this.target.json.id];
if (idCard.length !== 15 && idCard.length !== 18) {
return tip;
}
// 校验18位身份证号码
if (idCard.length === 18) {
// 校验出生日期
if (!/^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/.test(idCard)) {
return tip;
}
// 校验码验证
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 加权因子
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]; // 校验码对应值
var sum = 0;
var idCardWight = idCard.split('');
// 校验身份证前17位
for (var i = 0; i < 17; i++) {
sum += idCardWight[i] * factor[i];
}
// 计算校验码
var index = sum % 11;
// 校验最后一位是否正确
if (parity[index] != idCardWight[17].toUpperCase()) {
return tip;
}
}
// 校验15位身份证号码(已不常用,但为了完整性)
if (idCard.length === 15) {
// 这里只进行简单的长度和格式校验,如果需要进一步校验,可以添加相应逻辑
if (!/^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}$/.test(idCard)) {
return tip;
}
}
// 校验通过
return true;
```
评论