记录---开发中常用的正则表达

168 阅读1分钟

e00682c2be99a997bf3d8b395d9e40b7.jpeg

1、只能输入数字

描述:在输入框中,如果输入非数字的内容,则不能输入进去,直接替换为空。

主要操作就是这个keyup.native,意思是键盘抬起时进行替换

  <el-input
  v-model="form.budgetTotalAmount"
  placeholder="请输入总金额"
  @keyup.native="keyUpTotalAmount"/>
   
   方法中
   keyUpTotalAmount(e) {
   let reg=/[`~!@#$%^&*()_\-+=<>?:"{}|,\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、^\a-\z\A-\Z\u4E00-\u9FA5\uF900-\uFA2D-\u0020]/g,
      e.target.value = e.target.value.replace(reg,"");
  }
  

匹配中文和字母:^\a-\z\A-\Z\u4E00-\u9FA5\uF900-\uFA2D-\u0020。 测试很好用。

2、只能输入数字+字母

如标题所示,校验只能输入数字+字母,代码很臭但能跑就行

  validatorWalletId(rule, value, callback) {
      let regCn = /[·!#¥(——):;“”‘’、,|《。》?、【】[\]]/im;
      let patrn =
        /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*
        ()——\-+={}|《》?:“”【】、;‘',。、]/im;
      // 检验汉字
      let regCna = /[\u4E00-\u9FA5\uF900-\uFA2D-\u0020]{1,}/;
      if (value == undefined) {
        callback(new Error("xxx不能为空"));
      } else {
        let str = value.toString();
        if (!str) {
          callback(new Error("xxx不能为空"));
        } else {
          if (patrn.test(value) || regCn.test(value) ||regCna.test(value){
            callback(new Error("不允许输入汉字,只能输入数字+字母"));
          } else {
            callback();
          }
        }
      }
    },

3、去除字符串中的所有空格

有时候需要对空格进行控制,原理:就是匹配到空格就replace替换为"",这个引号不能有空格。很好用

let username = loginForm.username.replace(/\s*/g, "");
let password = loginForm.password.replace(/\s*/g, "");

4、含大小写字母,数字,特殊字符

这个就常用于密码的校验了,教资密码、四级密码都是用的这个。很好用

密码不能含有4位键盘横向方向连续的字母

密码不能含有4位连续的数字

密码不能含有连续4位相同的数字或字母

密码不能含有4位连续的字母

 newPassword(rule, value, callback) {
      let regex =
        /(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[*?!&¥$%^#,./@";:><\[\]}{\-=+_\\|》《。,、?’‘“”~ `])/;
      // 字母连续规则
      let strReg =
        /(a(?=b)|b(?=c)|c(?=d)|d(?=e)|e(?=f)|f(?=g)|g(?=h)|h(?=i)|i(?=j)|j(?=k)|k(?=l)|l(?=m)|m(?=n)|n(?=o)|o(?=p)|p(?=q)|q(?=r)|r(?=s)|s(?=t)|t(?=u)|u(?=v)|v(?=w)|w(?=x)|x(?=y)|y(?=z)|z(?=a)){3}[a-z]/i;
      // 数字连续规则
      let numReg =
        /(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){3}\d/;
      // 键盘字母横向连续规则
      let keyboardHorizontalReg =
        /(q(?=w)|w(?=e)|e(?=r)|r(?=t)|t(?=y)|y(?=u)|u(?=i)|i(?=o)|o(?=p)|p(?=q) |a(?=s)|s(?=d)|d(?=f)|f(?=g)|g(?=h)|h(?=j)|j(?=k)|k(?=l)|l(?=a) | z(?=x)|x(?=c)|c(?=v)|v(?=b)|b(?=n)|n(?=m)|m(?=z)){3}[a-z]/i;
      // 多个相同字母、数字规则
      let sameReg = /(\w)\1{3}/i;
      if (!value) {
        callback(new Error("密码不能为空"));
      } else {
        let passlength = value.length;
        if (passlength > 16 || passlength < 8) {
          callback(new Error("请输入8-16位字符"));
        } else {
          if (regex.test(value)) {
            if (sameReg.test(value)) {
              callback(new Error("密码不能含有连续4位相同的数字或字母"));
            } else if (strReg.test(value)) {
              callback(new Error("密码不能含有4位连续的字母"));
            } else if (numReg.test(value)) {
              callback(new Error("密码不能含有4位连续的数字"));
            } else if (keyboardHorizontalReg.test(value)) {
              callback(new Error("密码不能含有4位键盘横向方向连续的字母"));
            } else {
                callback();
            }
          } else {
            callback(new Error("密码必须含大小写字母,数字,特殊字符"));
          }
        }
      }
    },

5、保留两位小数

/(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)| (?:^(?:0)$)|(?:^[0-9]\.[0-9](?:[0-9])

6、手机号脱敏显示

let reg=/^(.{3})(?:\d+)(.{4})$/
mobile = mobile.replace(reg,"$1****$2");  //152****9527

7、删除中括号(包含括号)里面的数据

res.replace(/\[.*?\]/g, "")    //[000000]操作失败----> 操作失败