js 求一正则、 只让输入 非负的数字(整型或浮点型)  “”不能第一位、也不能最后一位、最多6位、^[-]?[0-9]+[\.]?[0-9]+$ //自己找了个 不是那么理想

解决方案 »

  1.   


    var v = "1.1啊";
    var re =/^[0-9]+(\.?[0-9]{1,6}$)?/;
    if(re.test(v)){
       alert("pass");}else{
      $('#valueDiv').html("<font color='red'>只能为整型或浮点型</font>");
      return ;
    }我有否用错? 不显示啊、
      

  2.   

    方法调用错了用if (re.exec(v)) 
      

  3.   


    <html>
    <script>
     var str = "0.2313";
     var re = "^[0-9]+\\.??[0-9]+$";   
     if(str.match(re) != null && str.length <= 6){
     alert("ok");
     }else{
     alert("error");
    }  
    </script>
    <body>
    test.html
    <body>
    </html>
      

  4.   

    试试var s = '1233.61';
    var re = /^(?=^\d?\D*\d?\D*\d?\D*\d?\D*\d?\D*\d?\D*)[0-9]+(\.[0-9]+)?$/;
    alert(re.test(s))
      

  5.   

    更正下
    /^(?=\d?\D*\d?\D*\d?\D*\d?\D*\d?\D*\d?\D*$)[0-9]+(\.[0-9]+)?$/
      

  6.   

    你们让开,高手来了。你的问题有歧义。
    如果指的是小数点后有六位,那么这个正则很好写:
    var expression=/^\d+(\.\d{1,6})?$/;  //因为是非负数,所以只需要第一位是数字就行了,不用判断有没有“-”。如果你指的是总长度六位,那么要复杂一些
    var expression=/^(?=.{1,6}$)\d+(\.\d+)?$/第二种写法需要你的环境支持环视,因为是JS,所以在IE里应该木有问题。如果实在不能判断长度,那摸斗写个函数来判长度罢。最后,记得给我分哦。
      

  7.   

    9楼的 你写的就有问题,别装好吧。
    /^\d+(\.\d{1,6})?$/  这个 就不严格,人家说非负数 ,你\d+ 开始  0001 这样的都进去了,
    =/^(?=.{1,6}$)\d+(\.\d+)?$/ 这个也不对  你的肯定型顺序环视用错了 ,(?=.{1,6}$) 表示环视内容是点后面1到6位,一共6位,你这个小数点后面都6位了,环视错了就等于没用,再看后面的00.000这样的也进去了,这个肯定是楼主不想要的东西。
    学了几天正则就卖弄啊 。不过还知道环视是什么,说明还是懂点的。可惜啊,年轻人,太鲁莽。这个我看了下我明白了楼主的意思,总共长6位,
    2.67788
    3456667
    23.5666
    0.55555
    这样的都符合的话,就和9楼说的一样,动态匹配需要用到环视。
    环视有四种:
    肯定型顺序环视(?=……)
    肯定性逆序环视(?<=……)
    否定型顺序环视(?!……)
    否定型逆序环视(?<!……)
    环视是用来缩小查找匹配范围和确定位置的。
    环视的性能很差,效率很定。如果正常的正则表达式解决不了,建议楼主用程序和正则结合的方式,最好别用环视。
    正则判断是否有非法字符,然后程序判断长度,这样做的时候很简单,而且效率也高。
    如果楼主一定要一个正则搞定  那请楼主qq联系我 236788273我的正则表达式 讲义下载http://download.csdn.net/detail/zzq19860626/4048641
      

  8.   


    var num = 1.1;
    if(/^[0-9]+(.[0-9]{1,6})?$/.test(num)){
    ........
    }
    判断是正整数,或正的浮点数,并且小数点后最多是6位。
      

  9.   

    23232.1    --->  false 顺便说下 6位的问题 : 是指 一共数字为6位、包括有效数字 比如   12.0000   true
            1.000000  false
             火药味道很浓啊、 我测测先、先谢谢各位这么热情、
      

  10.   

       数字的总长度为6、
    更正:    用错比对了、    后来经过测试:    统一使用                var str = document.getElementById('price').value;//一个输入框测试
             var re = "你们的正则";
             alert(re.test(str))
        1楼没有位数控制、    3楼的不知道是我用错了还是怎么、js错误、不能用、    8楼的可以、     9楼的在   111.001  是错的、    14楼的 不知道我用错了 还是如何、 js错误、不能用    另外大家别太激烈的互相诋毁、    事情是靠人来解决的、    诋毁其实能证明自己一些不足、情绪激动、    
    如果我哪里用错了正则比对、请告诉我哈、
      

  11.   

    我有正则表达式chm文档,要不我发给你 ,,你留Q