数字格式化javascript

时间:2012-11-13 20:45:42

标签: javascript regex

格式化数字时遇到问题。我在这个论坛上找到了一个脚本,我将在本文下面显示。它确实与逗号一起使用,但是当我添加10000000.00之类的数字时,它会变为10000000,00,但如果我添加10333333.00之类的数字,它将变为:{{1}这不是我想要的。我希望我的数字格式如下:10 33 33 33,00

我一直在寻找解决方案。我试图改变正则表达式,但我用正则表达式并不是那么好,所以我希望有人可以帮我解决这个问题。

这是剧本:

10 333 333,00

1 个答案:

答案 0 :(得分:0)

var tests =
[
3141,
314159,
31415926,
10000000.001,
10333333.002,
42121.1415926535
],
res,
i;

function addCommas(nStr)
{
    nStr += '';
    var x = nStr.split('.');
    var x1 = x[0];
    var x2 = x.length > 1 ? ',' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1 $2');
    }
    return x1 + x2;
}

for (i = 0; i < tests.length; i++)
{
  document.write(addCommas(tests[i]) + '<br>');
}

\d+{3}很奇怪,被JSLint拒绝(而不是在Firefox上工作)。

JSFiddle上测试了代码。