2012-11-13 59 views
0

我在格式化我的号码时遇到问题。我在这个论坛上找到了一个脚本,我将在这个文本下面展示。它确实与逗号一起工作,但是当我添加像10000000.00这样的数字时,它将变为10000000,00,但如果我添加一个数字如10333333.00,它将变为:10 33 33 33,00,这不是我想要的。我想要我的号码格式是这样的:10 333 333,00数字格式化javascript

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

这是脚本:

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; 
} 
+3

http://ntt.cc/2008/04/25/6-very-basic-but-very-useful-javascript-number-format-functions-for-web-developers.html –

+0

请始终链接到张贴您发现片段的地方 - 但是谢谢您告诉我们您已经复制了它:-) – Bergi

回答

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上测试的代码。