关于javascript:表单正则

52次阅读

共计 2497 个字符,预计需要花费 7 分钟才能阅读完成。

前言:onkeyup,onchange,oninput 区别

a、onkeyup = "value=value.replace(/[^\d]/g,'')"

应用 onkeyup 事件,有 bug,那就是在中文输入法状态下,输出汉字之后间接回车,会间接输出字母

b、onchange = "value=value.replace(/[^\d]/g,'')"

应用 onchange 事件,在输出内容后,只有 input 丢失焦点时才会失去后果,并不能在输出时就做出响应

c、oninput = "value=value.replace(/[^\d]/g,'')"

应用 oninput 事件,完满的解决了以上两种问题,测试临时还没有呈现其它问题。

注释

1. 只容许输出负数含小数(小数限度位数)
input 事件,keyup 事件(不举荐,输出字母能看见革除动作)

 inputTradeNum() {var reg = /^(\.*)(\d+)(\.?)(\d{0,2}).*$/g;
      if (reg.test(this.params.num)) {
        // 正则匹配通过,提取无效文本
        this.params.num = 
        this.params.num.replace(reg, "$2$3$4");
      } else {
        // 正则匹配不通过,间接清空
        this.params.num = "";
      }
      return this.params.num; // 返回符合要求的文本(为数字且最多有带 2 位小数)},

2. 只容许输出负数含小数(小数未限度,不罕用)

inputTradeNum(){this.params.num= this.params.num.replace(/[^\d^\.]+/g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
},

3. 判断字符串是否含有数字、字母、特殊字符

 const reg = new RegExp("(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,30}"
          ); // 必须含有数字、字母、特殊字符,三个缺一不可

          if (!reg.test(self.form.password)) {self.$message.error(self.$t("register.t31"));
            return;
          }

4. 只能输出数字和英文

<input  v-model.trim="value" @keyup="value=value.replace(/[\W]/g,'')">

5. 只能输出数字

<input  v-model.trim="value" @keyup="value=value.replace(/[^\d]/g,'')">    

6. 只能输出全角

<input  v-model.trim="value" @keyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')">    

7. 只能输出汉字

<input  v-model.trim="value" @keyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')">    

8. 邮件地址验证

<input v-model.trim="value" @keyup="test" />

var regu = 
"^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$"
var re = new RegExp(regu); 
if (this.value.search(re) != -1) {return true;} else {window.alert ("请输出无效非法的 E -mail 地址!") 
return false; 
}

9. 身份证

<input v-model.trim="value" @keyup="test" />

var regu = "^\\d{17}(\\d|x)$"
var re = new RegExp(regu); 
if (this.value.search(re) != -1) {return true;} else {return false;}

10.17 种正则表达式(未验证)

"^\\d+$"  // 非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$"  // 正整数 
"^((-\\d+)|(0+))$"  // 非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$"  // 负整数 
"^-?\\d+$"    // 整数 
"^\\d+(\\.\\d+)?$"  // 非负浮点数(正浮点数 + 0)"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  // 正浮点数 
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  // 非正浮点数(负浮点数 + 0)"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  // 负浮点数 
"^(-?\\d+)(\\.\\d+)?$"  // 浮点数 
"^[A-Za-z]+$"  // 由 26 个英文字母组成的字符串 
"^[A-Z]+$"  // 由 26 个英文字母的大写组成的字符串 
"^[a-z]+$"  // 由 26 个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"  // 由数字和 26 个英文字母组成的字符串 
"^\\w+$"  // 由数字、26 个英文字母或者下划线组成的字符串 
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email 地址 
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

正文完
 0