利用正则让input标签只能输入数字

利用正则把除了数字之外的字符变为空,下面代码中若【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开头的字符串

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值