2021/04/29 element-ui自定义表单验证规则(邮箱,手机号,身份证,社会信用代码)

本文介绍了如何在前端表单中使用自定义校验规则,包括邮箱、手机号、身份证号码和社会信用代码的正则表达式验证,以及不同写法和方法的对比。通过实例展示了如何在data和methods中实现校验,并分享了常见正则表达式规则的资源链接。
  • 背景
    需求需要表单提交的时候校验有效的邮箱,身份证信息等,把这些用到了的验证规则收集下来

  • 代码
    我是在data中写规则的,完全参照饿了么官网写的,当然正则校验这些是在网上搜罗的,我不会写

在这里插入图片描述

//========自定义表单校验规则==========
//邮箱验证
var checkEmail = (rule, value, callback) => {
 const regEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
 if (regEmail.test(value)) {
   return callback();
 }
 callback(new Error("邮箱格式有误"));
};
//手机号验证
var checkMobile = (rule, value, callback) => {
 const regMobile = /^(0|86|17951)?(13[0-9]|15[012356789]|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
 if (regMobile.test(value)) {
   return callback();
 }
 callback(new Error("手机号格式有误"));
};
//身份证号码校验
var checkIDCard = (rule, value, callback) => {
 const regIDCard = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2]
Element - UI表单中根据证件类型变化校验身份证号,可通过动态绑定校验规则来实现。以下为详细步骤与示例代码: ### 1. 定义不同证件类型的校验规则 在`script`部分定义不同证件类型对应的校验规则,如身份证手机号等。 ### 2. 根据证件类型动态绑定校验规则 在`template`部分,依据用户选择的证件类型,动态绑定对应的校验规则。 ### 示例代码 ```vue <template> <el-form :model="formData" :rules="getRules()" ref="form"> <el-form-item label="证件类型" prop="certType"> <el-select v-model="formData.certType" placeholder="请选择证件类型"> <el-option label="身份证" value="idCard"></el-option> <el-option label="手机号" value="mobile"></el-option> </el-select> </el-form-item> <el-form-item label="证件号码" prop="certNumber"> <el-input v-model="formData.certNumber" placeholder="请输入证件号码"></el-input> </el-form-item> <el-form-item> <el-button @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { formData: { certType: '', certNumber: '' }, idCardRules: [ { required: true, message: '身份证号不能为空' }, { type: 'string', message: '身份证号必须为字符串' }, { pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, message: '不是合法的身份证号!', trigger: 'blur' } ], mobileRules: [ { required: true, message: '手机号不能为空' }, { type: 'number', message: '手机号必须为数字' }, { pattern: /^1(3|4|5|6|7|8|9)\d{9}$/, message: '手机号格式不对', trigger: 'blur' } ] }; }, methods: { getRules() { if (this.formData.certType === 'idCard') { return { certNumber: this.idCardRules }; } else if (this.formData.certType === 'mobile') { return { certNumber: this.mobileRules }; } return {}; }, submitForm() { this.$refs.form.validate((valid) => { if (valid) { alert('表单验证通过'); } else { alert('表单验证失败'); } }); } } }; </script> ``` ### 代码解释 - `getRules`方法:依据`formData.certType`的值,返回对应的校验规则- `submitForm`方法:调用`this.$refs.form.validate`进行表单验证。 ### 注意事项 - 要确保正则表达式的正确性,以免校验不准确。 - 若有更多证件类型,可在`data`中添加对应的校验规则,并在`getRules`方法里添加相应判断逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值