Javascript 以逗号作为百位分隔符打印数字

Javascript 以逗号作为百位分隔符打印数字,javascript,regex,Javascript,Regex,我有一个像“7847258998”这样的数字,我想用javascript中的百位逗号分隔符打印它。 结果应该是: 7,84,72,58,998 i、 e右起的前三位数字应分组在一起。剩余的数字以2个为一组。我尝试了以下方法: "7847258998".replace(/\B(?=(\d{3})+(\d{2})+(?!\d))/g, ",") 但它返回:7,8,4,7258998。正确的表达方式是什么?试试这个: function commafy(num) { num = num

我有一个像“7847258998”这样的数字,我想用javascript中的百位逗号分隔符打印它。 结果应该是:

7,84,72,58,998
i、 e右起的前三位数字应分组在一起。剩余的数字以2个为一组。我尝试了以下方法:

"7847258998".replace(/\B(?=(\d{3})+(\d{2})+(?!\d))/g, ",")
但它返回:
7,8,4,7258998
。正确的表达方式是什么?

试试这个:

function commafy(num)
{  
   num  =  num+"";  
   var  re=/(-?\d+)(\d{3})/  
   while(re.test(num))
   {  
     num=num.replace(re,"$1,$2")  
   }  
   return  num;  
}
function  commafyback(num)
{  
   var x = num.split(',');
   return parseFloat(x.join(""));
} 
alert(commafy(7847258998))
"7847258998".replace(/\B(?=(\d{2})*(\d{3})$)/g, ",");
我在“向前看”中匹配字符串的结尾,以便我总是在寻找一些理智的东西。除此之外,几乎任何东西都匹配

在长度为1-10的输入端进行测试。。足以决定它是否可行。但这种方法效率很低,因为对于每个字符,您必须解析字符串的其余部分

但是您确实要求使用一个正则表达式来完成任务=)

尝试以下方法:

"7847258998".replace(/\B(?=(\d{2})*(\d{3})$)/g, ",");
我在“向前看”中匹配字符串的结尾,以便我总是在寻找一些理智的东西。除此之外,几乎任何东西都匹配

在长度为1-10的输入端进行测试。。足以决定它是否可行。但这种方法效率很低,因为对于每个字符,您必须解析字符串的其余部分


但是您确实要求使用一个正则表达式来完成任务=)

,它给出了错误的答案:它给出了
7847258998
,但OP想要
7,84,72,58998
。(参见)这给出了错误的答案:它给出了
7847258998
,但OP想要
7,84,72,58998
。(参见)使它起作用。我用
(/\B(?=(\d{2})+(?!\d))/g,“,”,”
将最后3位数字分隔开,并在其余数字上使用逗号,使其正常工作。我用
(/\B(?=(\d{2})+(?!\d))/g,“,”
+1分隔了最后3位数字,并在其余数字上使用逗号。作为一个小的改进,您可以将
\B
更改为
\d
,并将替换字符串从
“,”
更改为
“$1”。
。这样,它只会在一个数字后插入一个逗号(而不是在字母或下划线后)。不确定它是否效率低下,因为它被选为这里的最佳答案+1。作为一个小的改进,您可以将
\B
更改为
\d
,并将替换字符串从
“,”
更改为
“$1”。
。这样,它只会在一个数字后插入一个逗号(而不是在字母或下划线后)。不确定它是否效率低下,因为它被选为这里的最佳答案