总结前端常用的正则表达式

一、常见的个人信息限制的正则表达式

(1)姓名只能包含汉子或者英文:/^([\u4E00-\u9FA5]+|[a-zA-Z]+)$/
(2)大陆身份证号:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
(3)手机号:/^1[345678]\d{9}$/

二、输入框限制输入

(1)只允许输入正整数

 <el-input placeholder="请输入"  v-model="str" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')"></el-input>

(2)只允许输入数字,可以小数点后面保留两位

<el-input onkeyup="this.value=this.value.replace(/[^\d.-]/g, '').replace(/\-{2,}/g, '-').replace(/\.{2,}/g, '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')" v-model="param.commRatio">

(3)密码8位以上密码包含数字、字母、特殊字符

 rules: [{
      message: '8位以上包含数字、字母和特殊字符',
      pattern: /[\w\W]{8,}/,
      trigger: 'blur'
    }]

(4)只允许输入数字和英文逗号

 <el-input onkeyup="this.value=this.value.replace(/[^\d\,]/g,'')" :disabled="param.state==0" v-model="param.roleDisable" type="textarea" wrap="hard" placeholder="示列多角色:1,2,3,4,5"></el-input>

注意:不知道为什么用onkeyup当中文和英文来回切换时v-model可能拿不到值或者拿到错误的中文,后来改为下面的格式没有此问题

 <el-input placeholder="请输入"  v-model="str" @input="str=str.replace(/^(0+)|[^\d]+/g,'')"></el-input>

三、特殊的需求

(1)app版本升级设置时版本号要求1.0.0格式的版本号

   /^[0-9]\.[0-9]\.[0-9]$/

(2)项目有个地址管理需求要求用户选择的省市县自动代入到详细地址栏里面,用户在填写详细地址时不能删除省市县且后面输入的不能只有数字

省市县我用的插件city-select

<city @sendCity="getCity" :Address='orderAddress' style="float:left"></city>

(1)在省市县选择的事件赋值给详细地址字段

    getCity(val){
            this.addressparam.receiveAddress = this.appendstr+ this.addressparam.regionName;//详细地址
            this.startText = this.appendstr+ this.addressparam.regionName;//用来后面对比不能删除省市县
        },

(2)限制不能删除省市县

<el-input style="width:400px"  @keyup.native="inputaddress" v-model="addressparam.receiveAddress" placeholder="请输入详细地址" size="medium" ></el-input>
  inputaddress(){//给详细地址输入框绑定判断长度
    if(this.addressparam.receiveAddress.indexOf(this.startText)==0||this.addressparam.receiveAddress ==     this.startText){
               return false;
            }else{
                this.addressparam.receiveAddress =this.startText
            }
        },

(3)手动输入的不能只有数字

detectNum(str){
    let n=0;
     for(var i=0;i<str.length;i++){                 
         n = str.charCodeAt(i)
         if(n<48||n>57){return false;}
         return true
     }
 },
 let inputstr = this.addressparam.receiveAddress.substr(this.startText.length, this.addressparam.receiveAddress.length);
 if(this.detectNum(inputstr)){//截取省市县之后的所以用户手动输入的内容判断是否只有汉字
       this.$message.error("请输入正确的详细地址")
       return false;
   }

至此这个变态的需求完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swagLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值