一、vue身份证号码校验?
let checkRegNo = (rule,value,callback) => {
setTimeout(() => {
const rr = /^[1-9]\d{1}(.{13}|.{16})$/
if(rr.test(value)){
if(value.length==18){
//加权因子
let weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
// 校验位
let check_code = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
let idWiSum = 0
for(let i =0; i<17 ;i++){
idWiSum += value.substring(i,i+1)*weight_factor[i]
}
//计算模
let idMod = idWiSum % 11
let idLastCode = check_code[idMod]
if(value[17] == idLastCode){
callback
}
callback(new Error('身份证最后一位校验码不正确'))
}
}else{
callback(new Error('身份证仅能为15位或18位且前两位为有效行政区划代码'))
}
},1000)
}
二、使用
regNo : [
{validator:checkRegNo,trigger:'blur'}
]