vue+elementui开发中常用*正则入门*

562 阅读2分钟

vue+elementui开发中常用正则校验入门

1. 基于element-ui的form表单校验

(1) 行内校验方式

<el-form-item
        label="活动名称1"
        prop="name1"
        :rules="[
          { required: true, message: '请输入活动名称1', trigger: 'blur' },
          {
            pattern: /^[\u4e00-\u9fa5]{0,}$/,
            message: '格式错误,仅支持中文输入',
          },
          {
            pattern: /^[\S]*$/,
            message: '不支持输入空格',
          },
        ]"
      >
    <el-input v-model="ruleForm.name1" placeholder="行内校验"></el-input>
</el-form-item>

(2) 整体校验

<el-form :model="ruleForm" :rules="rules" ref="ruleForm">
<el-form-item label="活动名称2" prop="name1">
     <el-input v-model="ruleForm.name1"></el-input>
     </el-form-item>
</el-form>
data() {
    return {
      ruleForm: {
        name1""
      },
      rules: {
        name2: [
          { requiredtrue, message"请输入活动名称", trigger"blur" },
          { pattern/^[\S]*$/, message"不支持输入空格" },
        ],
      },
    }

属性rules绑定一个数组,数组的每个元素就是一条验证规则,单个校验规则对象中包含 required/message/trigger/min/max 等常用参数,不常用的不举例了

  1. required: 非空验证,字段前边的必填符号*根据此参数展示

  2. pattern: 正则表达式,可写多条规则,自动校验

    {pattern: /^[^\s]*$/,message: "不支持输入空格"}

  3. min/max: 通常对数字大小范围做校验。对于字符串和数组类型,将根据长度进行比较

    { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }

  4. trigger:规则触发方式,参数可传string或者数组,传数组

    { required: true, message: "请输入活动名称", trigger:["blur", "change"]}

  5. messages: 未通过校验的提示信息,String

  6. validator: 可以为指定字段自定义验证函数,实现一些比较复杂的校验

data() {
    var validatePass = (rule, value, callback) => {
      if(!value) {
          return callback(new Error('年龄不能为空'));
        }
      if(!Number.isInteger(value)) {
          callback(new Error('请输入数字值'));
      } else {
         if(value < 18) {
             callback(new Error('必须年满18岁'));
          } else {
             callback();
          }
       }
    };
    return {
      ruleForm: {
        name3"",
      },
      rules: {
        name3: [{ validator: validatePass, trigger"blur" }],
      },
    };
  },

 

2. 表单校验正则常用字符****

222.png


[\u4e00-\u9fa5] 匹配汉字
\w 匹配字母或数字或下划线 等价于 '[A-Za-z0-9_]'

  1) 如何阅读正则

Eg:11位手机号码或者12位电话号码

/^((0\d{2,3}-\d{7,8})|(1\d{10}))$/

0开头,\d{2,3}匹配任意2-3位数字,-固定匹配-,\d{7,8}匹配任意7-8位数字;

或 1开头,匹配任意10位数字

如027-86541111或13512341234

Eg:15位或18位身份证号码

//^([1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3})$|^([1-9]\d{5}\d{4}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])$//

这个正则分为两段来阅读,

第一段是15位身份证规则

/^([1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3})$/

[1-9]数字开头不含0,\d{5}匹配任意数字5位,

\d{2}匹配任意数字2位(年份),

((0[1-9])|(10|11|12)),0开头1-9结尾或10或11或12(月份),

([0-2][1-9])|10|20|30|31),0-2开头1-9结尾或10或20或30或31(日期),

\d{3}匹配任意数字3位

 

第二段是18位身份证规则

/^([1-9]\d{5}\d{4}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])$/

[1-9]数字开头不含0,\d{5}匹配任意数字5位,

\d{4}匹配任意数字4位(年份)

((0[1-9])|(10|11|12)),0开头1-9结尾或10或11或12(月份),

([0-2][1-9])|10|20|30|31),0-2开头1-9结尾或10或20或30或31(日期)

\d{3}匹配任意数字3位

[0-9Xx]以0-9或x或X结尾

 

 

Eg:密码

/^((0\d{2,3}-\d{7,8})|(1\d{10}))$/

/^[a-zA-Z]\w{6,18}$/

[a-zA-Z] 以大小写字母开头

\w{6,18} 任意数字大小写字母下划线6-18位结尾

 

3. 结合elementui和项目
name2: [

          { required:true,message:'请输入籍贯', trigger"blur"},

          { pattern/^[\S]*$/, message"不支持输入空格" },

          { pattern/^[\u4e00-\u9fa5]{1,}$/, message"仅支持输入汉字" },

          { min1, max10, message"长度不超过10位",trigger: ["blur", "change"],}

        ],
       
*注意:当多条正则存在交集的时候,触发顺序是按下标排列顺序来的,比如不支持空格和仅支持汉字,
      当顺序调换的时候,无法触发不支持输入空格的错误提示

欢迎大佬指正,交流,代码之道需举一反三