正则:验证手机号码、身份证号码合规(项目常用、大型项目亲测有效)
1.手机号码简单验证1字开头长度11位
1.1 正则表达式
/^1\d{10}$/
1.2 element写法
//index.vue
data(){
var validatorPhone = function (rule, value, callback) {
if (value === "") {
// callback(new Error('请输入手机号码'))
callback();
} else if (!/^1\d{10}$/.test(value)) {
callback(new Error("手机号格式错误"));
} else {
callback();
}
};
}
return {
rules: {
phone: [{ required: true, validator: validatorPhone, trigger: ["change", "blur"]} ]
}
}
2.手机号码合规验证
2.1 正则表达式
/^1(3|4|5|6|7|8|9)\d{9}$/ //最新16手机正则
/^(0\d{2,3}-){0,1}\d{7,8}$/ //座机
2.2 element写法
//index.vue
data(){
var validatorPhone = function (rule, value, callback) {
let reg = null
let mobile = /^1(3|4|5|6|7|8|9)\d{9}$/; //最新16手机正则
let tel = /^(0\d{2,3}-){0,1}\d{7,8}$/; //座机
if (value.charAt(0) == 0){
reg = tel;
} else {
reg = mobile;
}
if (value === "") {
callback();
}else if(!reg.test(value)) {
callback(new Error("电话号码格式错误"));
} else {
callback();
}
};
}
return {
rules: {
phone: [{ required: true, validator: validatorPhone, trigger: ["change", "blur"]} ]
}
}
3.身份证号码合规验证(大型项目已亲测)
//index.vue
var validatorIdNum = function (rule, value, callback) {
if (value === "") {
callback(new Error('请输入身份证号码'))
} else if (!isIdCardNo(value)) {
callback(new Error("身份证输入有误"));
} else {
callback();
}
};
//common.js
export function isIdCardNo(num) { let factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1); let parityBit = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"); let varArray = new Array(); let intValue; let lngProduct = 0; let intCheckDigit; let intStrLen = num.length; let idNumber = num; // initialize if ((intStrLen != 15) && (intStrLen != 18)) {
return false; } // check and set value for (let i = 0; i < intStrLen; i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
return false;
} else if (i < 17) {
varArray[i] = varArray[i] * factorArr[i];
} }
if (intStrLen == 18) {
//check date
var date8 = idNumber.substring(6, 14);
if (isDate8(date8) == false) {
return false;
}
// calculate the sum of the products
for (let i = 0; i < 17; i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = parityBit[lngProduct % 11];
// check last digit
if (varArray[17] != intCheckDigit) {
return false;
} } else { //length is 15
//check date
let date6 = idNumber.substring(6, 12);
if (isDate6(date6) == false) {
return false;
} } return true; }