this.validateIdNum(idType, idNo)
//idType 1:身份证 2:护照 3:港澳台居民居住证 4:台湾居民来往大陆通行证 5:台湾居民来往大陆通行证 6:其他
//idNo 号码
function validateIdNum(type, idNumber) {
if (type == 1) { // 身份证
// 加权因子
const weightFactor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// 校验码
const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
const code = idNumber + '';
const last = idNumber[17]; // 最后一个
const seventeen = code.substring(0, 17);
// ISO 7064:1983.MOD 11-2
// 判断最后一位校验码是否正确
const arr = seventeen.split('');
const len = arr.length;
let num = 0;
for (let i = 0; i < len; i++) {
num += arr[i] * weightFactor[i];
}
// 获取余数
const resisue = num % 11;
const lastNo = checkCode[resisue];
const idcardPatter =
/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
// 判断格式是否正确
const format = idcardPatter.test(idNumber);
console.log(format);
return !!(last === lastNo && format);
} else {
const olist = [{
name: '护照',
value: '2',
regexp: /^[a-zA-Z0-9]{5,17}$/
}, {
name: '港澳台居民居住证',
value: '3',
regexp: /^8[123]0000(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$/
}, {
name: '港澳居民来往内地通行证',
value: '4',
regexp: /^[H|h|M|m](\d{8}|\d{10})$/
}, {
name: '台湾居民来往大陆通行证',
value: '5',
regexp: /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/
}, {
name: '其他',
value: '6'
}];
for (let i = 0; i < olist.length; i++) {
if (type == olist[i].value && !!regexp) {
return olist[i].regexp.test(idNumber);
}
}
return true;
}
}
js验证身份证规则
最新推荐文章于 2024-05-21 15:30:01 发布