var re = /^(¥)?(-)?(\d+|,\d{3})+(\.\d{0,8})?$/;这是目前用的,不过有些问题
格式要求是:
1.整数位数限制为(1-12)符号不计算在内
2.小数部分限制为(0-8)位
3.三位一分割,可以加逗号,加的话,所有
三位分割的地方都加,不加的话一个也不加
现在的这个
",123" 是非法,现在这个却也匹配上了

解决方案 »

  1.   

    正则爱好者路过
    /^(¥)?(-)?[1-9]\d{0,2}((,\d{3}){0,3}|\d{0,9})(\.\d{0,8})?$/
      

  2.   

    单独一个0的时候,处理不了,修改了下var re = /^(¥)?(-)?(0|([1-9]\d{0,2}((,\d{3}){0,3}|\d{0,9})))(\.\d{0,8})?$/
      

  3.   

    正则爱好者路过<script type="text/javascript"> 
    var test = '13,123.1';
    var reg = /^¥?-?(?!\.)(?!\d{13})\d{1,3}(,?\d{3})*(\.\d{1,3})?$/ig;
    document.write(test.match(reg));
    </script>
      

  4.   

    看错了。小数8位
    <script type="text/javascript"> 
    var test = '13,123.1';
    var reg = /^¥?-?(?!\.)(?!\d{13})\d{1,3}(,?\d{3})*(\.\d{1,8})?$/ig;
    document.write(test.match(reg));
    </script>
      

  5.   

    er
    123456,789,123.12345678
    嗯。疏忽了。
    这样试试?<script type="text/javascript"> 
    var test = '123456,789,123.12345678';
    var reg = /^¥?-?(?!\.)(?!\d{13})(?:\d{1,3}(?:,\d{3})*|\d{1,12})(?:\.\d{1,8})?$/ig;
    document.write(test.match(reg));
    </script>
      

  6.   

    加上12位的限制<script type="text/javascript"> 
    var test = '123456,789,123.12345678';
    var reg = /^¥?-?(?!\.)(?!\d{13})(?:\d{1,3}(?:,\d{3}){0,3}|\d{1,12})(?:\.\d{1,8})?$/ig;
    document.write(test.match(reg));
    </script>
      

  7.   

    最终正则//貨幣正則(整数:12;小数:8)
    var re = /^(¥)?(-)?(0|([1-9]\d{0,2}((,\d{3}){0,3}|\d{0,9})))(\.\d{1,8})?$/