校验规则自定义(身份证、姓名、企业名称、统一社会信用代码、手机号码、登录密码、二次登录密码、验证码)

切换用户类型分别校验对应的字段
注册为例,分别有两个注册类型
2是企业 3是专家
在这里插入图片描述
在这里插入图片描述

 var validatesfz = async (rule, value, callback) => {
      if (!value) {   
        return callback(new Error("请输入身份证"));
      }
      // 定义flag来接收yz里面的哪个方法(value传的值)
     var pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
      if (!pattern.test(value)) {
        // alert(1)
        return callback(new Error("请输入正确的身份证"));
      }
    }
     var validateName = async (rule, value, callback) => {
      if (!value) {   
        return callback(new Error("请输入姓名"));
      }
    }
     var validateqymc = async (rule, value, callback) => {
      if (!value) {   
        return callback(new Error("请输入企业名称"));
      }
        if (value.length<2) {   
        return callback(new Error("请最少输入两个字"));
      }
    }
     var validateAccount = async (rule, value, callback) => {
      if (!value) {   
        return callback(new Error("请输入统一社会信用代码"));
      }
      // 定义flag来接收yz里面的哪个方法(value传的值)
      var reg =  /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g;
      if (!reg.test(value)) {
        // alert(1)
        return callback(new Error("请输入正确的社会统一信用代码"));
      }
     }
         var validateMobile = (rule, value, callback) => {
      if (!value) {
        return callback(new Error("请输入手机号码"));
      } else {
        var reg = /^((13[0-9])|(17[0-1,6-8])|(15[^4,\\D])|(18[0-9]))\d{8}$/;
        if (!reg.test(value)) {
          return callback(new Error("请正确输入手机号码"));
        } else {
          callback();
        }
      }
    };
    var validatePassword = (rule, value, callback) => {
       if (!value) {   
        return callback(new Error("请输入登录密码"));
      }
      var regex = new RegExp(
       /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&\.])[A-Za-z\d$@$!%*?*\.]{8,16}/
      );
      if (!regex.test(value)) {
        callback(
          new Error(
            "请输入8-16个字符,至少1个大写字母,1个小写字母,1个数字和特殊字符.*@?!$%&任意一个 "
          )
        );
      } else {
        if (this.ruleForm.checkPass !== "") {
          this.$refs.ruleForm.validateField("checkPass");
        }
        callback();
      }
    };
    var validatePass2 = (rule, value, callback) => {
       if (!value) {   
        return callback(new Error("请输入再次输入登录密码"));
      }
      var regex = new RegExp(
        /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&\.])[A-Za-z\d$@$!%*?*\.]{8,16}/
      );
      if (!regex.test(value)) {
        callback(
          new Error(
            "请输入8-16个字符,至少1个大写字母,1个小写字母,1个数字和特殊字符.*@?!$%&任意一个 "
          )
        );
      } else 
      if (value !== this.ruleForm.password) {
        callback(new Error("两次输入密码不一致!"));
      } else {
        callback();
      }
    };

这些方法放到form表单自带的规则里面(身份证和社会信用代码是同一个字段,姓名和企业名称也是同一个字段,所以校验规则也需要判断)

   rules: {
        password: [
          {
            
            validator: validatePassword,
            trigger: "blur",
          },
        ],
        checkPass: [
          {
            validator: validatePass2,
            trigger: "blur",
          },
        ],
        account: [
          {
            validator: validateAccount,
            trigger: "blur",
          },
        ],
          phone: [
          {
            validator: validateMobile,
            trigger: "blur",
          },
        ],
          username: [
          {
            validator: validateqymc,
            trigger: "blur",
          },
        ],
        code: [
          {
            validator: validateYzm,
            trigger: "blur",
          },
        ],
      },

开始判断用户类型所判断的校验是哪个的校验规则
在用户类型下来绑定一个方法 yhlxChange

    yhlxChange(val){ 
       this.ruleForm.username='',
       this.ruleForm.phone='',
       this.ruleForm.account=''
      this.$refs.ruleForm.clearValidate(); //清空校验缓存
     if(val==2){
      this.qyShow =true
      this.ryzjShow =false
      this.rules.account=[]
      this.rules.account[0]= {
      validator: validateAccount,
      trigger: "blur",
    },
    this.rules.username=[]
      this.rules.username[0]= {
      validator: validateqymc,
      trigger: "blur",
    }
    }else{
    this.qyShow =false
    this.ryzjShow =true
    this.rules.account=[]
    this.rules.account[0]= {
          validator: validatesfz,
          trigger: "blur",
      },
    this.rules.username=[]
    this.rules.username[0]= {
    validator: validateName,
    trigger: "blur",
      }
     }
    },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值