要求:必填,符合身份证号码规则
html:
<el-form
:model="formValidate"
:rules="rules"
ref="formValidate"
label-width="120px"
style="width: 90%"
>
<el-form-item label="账号:" prop="cid">
<el-input v-model.trim="formValidate.cid" placeholder="请输入证件号码" />
</el-form-item>
</el-form>
js:
引入 validate.js
import validate from "@/utils/validate";
validate.js文件内容:
/**
* 检查证件号码是否正确
*/
function checkCid(cid, ctype, who = ''){
cid = removeSpaceFun(cid);
if(!cid) {
return {data: false, msg: '请填写证件号码'};
}
ctype = +ctype
if (/.*[\u4e00-\u9fa5]+.*$/.test(cid)) {
return {data: false, msg: who + '证件号码不允许使用汉字'};
}
// 全角字符判断
if (/[^\x00-\xff]/.test(cid)) {
return {data: false, msg: who + '证件号码不允许全角字符'};
}
// 特殊字符判断
if (/[#\$%\^&\*【】‘;:”“'。,,、.?<>+=:]+/g.test(cid)) {
return {data: false, msg: who + '证件号码不允许\'#$%^&*【】‘;:”“\'。,、.,?<>+=:\'等特殊字符'};
}
if (ctype === 10) {
if (!checkIDCard(cid)) {
return {data: false, msg: who + '证件号码不正确'};
}
}
//港澳
if (ctype === 14) {
var pattern = /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/;
if (!pattern.test(cid)) {
return {data: false, msg: who + '证件号码不正确'};
}
}
//台湾
if (ctype === 15) {
var re1 = /^\d{8}$|^\d{10}[ABD]$|^\d{18}$/;
if (!re1.test(cid)) {
return {data: false, msg: who + '证件号码不正确'};
}
}
//护照
if (ctype === 20) {
var re1 = /^[a-zA-Z]{5,17}$/;
var re2 = /^[a-zA-Z0-9]{5,17}$/;
if (!re1.test(cid) && !re2.test(cid)) {
return {data: false, msg: who + '证件号码不正确'};
}
}
return {data: true, msg: ''};
}
export default {
checkCid
}
使用:
data() {
return {
formValidate: {
cid: '',
},
rules: {
cid: [
{
required: true,
message: "请输入证件号码",
trigger: "blur",
},
{
validator: (rule, value, callback, source, options) => {
let error = [];
let checkRes = validate.checkCid(value, Number(this.formValidate.ctype))
if (!checkRes.data) {
error.push(checkRes.msg);
}
callback(error);
},
trigger: "blur",
},
]
},
};
},