利用正则把除了数字之外的字符变为空,下面代码中若【onkeyup】--键盘键按下事件,在该事件里中判断如果按下的键不是数字,则变为空,若为空的时候提示该input只能输入数字
<div>
<input type="text" class="chang" id="ForeignCurrency01" name="ForeignCurrency" onkeyup="value = value.replace(/[^0-9]/g,'')" />
</div>
<script>
//input失去焦点事件--虽然上面用了正则,但是在中文输入法按了字母
再按回车键就发现,非数字字符也可以显示在文本中
document.getElementById("inp").onblur = function () {
错误方法一:通过parseInt方法将文本值转换为数字,然后再判断原文本
值跟转换后数值的长度是否相等,不相等则清除数据
//发现弊端,如果输入数字,第一位是零,那么也会清除数据
//var val = document.getElementById("inp").value;
//var num = parseInt(val,10);//[参数1:要转换的值,参数2:
转换基数,如果是10就是十进制]
//if (val.length!=num.toString.length) {
// document.getElementById("inp").value = "";
// alert("只能输入数字!");
//}
//错误方法二:Number(x)--该方法将参数转换为number类型
//发现弊端,十六进制的数值也是可以转换,但十六进制转换的值是错误的。
比如"0xa"
//var val = document.getElementById("inp").value;
//var num = Number(val);
//if (num!=NaN) {
// document.getElementById("inp").value = "";
// alert(num);
//}
正确的方法:
//判断用Number转换和用parseInt转换后的值对比,不是一样的就证明
不是不是十进制的数字,就清除数据
var val = document.getElementById("inp").value;
var num = parseInt(val,10);
if (num != Number(val)) {
document.getElementById("inp").value = "";
alert("只能输入数字!");
}
};
</script>
正则表达式元字符的讲解:
. 匹配除换行符以外的任意字符
\w 匹配数字或字母或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
常用的限定符:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n次到m次
正则的反义
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符 (中括号的话就代表指定一个范围, 除了范围以外的任何字符都可以进行匹配)
解释:<a [^>]+> 匹配用尖括号括起来的以a开头的字符串