前言: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(value) {
//后台返回当前币种小数精度
var curCionScale = value||8;
var reg = new RegExp(
`^(\\.*)(\\d+)(\\.?)(\\d{0,${curCionScale}}).*$`,
"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.只允许输入正数含小数(小数未限制,不常用)
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。