寻求一个javascript正则表达式,要求只能输入正整数,包括可以输入0
我发现用
/^(\d)+$/;似乎不行
如果用这个,可以输入001,002,03,04这类数字,我想这些应该不算正整数吧
请求帮助

解决方案 »

  1.   

    /^(?!0)\d*$/   OR   /^[^0]\d*$/
      

  2.   


    你干嘛非要在匹配模式中添加一个与“0”呢?我仔细琢磨了下,你可能直接对数值而不是字符串正行test测试。如果这样,JS内部机制会先把诸如01的数值转化为1,当然alert(/^(?!0\d+)\d+$/.test(01))会为true。
    详情如下:
    <script>
    alert(/^(?!0\d+)\d+$/.test("0"));   // true
    alert(/^(?!0\d+)\d+$/.test("01"));  //false
    alert(/^(?!0\d+)\d+$/.test("1010"));// truealert(01); //1
    alert(/^(?!0\d+)\d+$/.test(01));// true
    </script>正则匹配的数据类型是字符串而非数值,通过输入框取得的value也应该是字符串的。哈哈哈。
      

  3.   

    回 10楼:我只想说我的是经过测试了的 没有问题的 包括对字符串匹配,要否定别人,请先动手实践了再说还有其实对与楼主说提到的 001,04,012这类数字,其实也按常理来讲还是符合要求的,只需要LZ在操作输入的字符串的时候进行一定的处理就是了,如:
    调用Number("01")//返回1
    或调用parseInt("012",10)//12
    这样就可以满足LZ的需要