function clearNoNum(obj) {
 //先把非数字的都替换掉,除了数字和.-
            obj.value = obj.value.replace(/(-)?[^\d.]/g, "");
            //必须保证第一个为数字而不是.
            obj.value = obj.value.replace(/^\./g, "");
            //保证只有出现一个.而没有多个.
            obj.value = obj.value.replace(/\.{2,}/g, ".");
            //保证.只出现一次,而不能出现两次以上
            obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");写了这个方法,在input调用,验证正数没有问题,请问如何验证负数呢,?<input type="text" style="width:50px;" onkeyup="clearNoNum(this)" id="test" maxlength="10" value="0.00">

解决方案 »

  1.   

    写这么多都没有用。
    var reg=/-?\d+(\.\d+)?/;
      

  2.   

    <!DOCTYPE HTML>
     <html lang="en-US">
     <head>
      <meta charset="UTF-8">
      <title>测试</title>
      <script type="text/javascript">
      function checknum (v) {
      var reg = /^-?[1-9]*\d(\.\d+)?$/;
      return reg.test(v);
      }
      function testcase () {
      var a = ['0','1',"99","0.1","0.99","-1","-1.","-","-.5","----","aaa","a.0","-00.1","000.1"];
      var r = [];
      for (var i = a.length - 1; i >= 0; i--) {
      r.push(a[i]+" : "+checknum(a[i]));
      };
      return r.join("\n");
      }
     
      alert(testcase());
      </script>
     </head>
     <body>
      <div class="page">
      <input type="text" name="num" id="num" onblur="if(!checknum(this.value)){alert('err')}">
      </div>
     </body>
     </html>