0

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

7,84,72,58,998

即右边的前三位数字应该组合在一起。剩余的数字以 2 为一组分组。我尝试了以下操作:

"7847258998".replace(/\B(?=(\d{3})+(\d{2})+(?!\d))/g, ",")

但它返回:7,8,4,72,58998. 什么是正确的表达方式?

4

2 回答 2

3

尝试这个:

"7847258998".replace(/\B(?=(\d{2})*(\d{3})$)/g, ",");

我在前瞻中匹配字符串的结尾,这样我总是在寻找理智的东西。否则几乎任何东西都匹配。

在输入长度 1-10 上进行了测试。足以确定它可能有效。但是,这样做的效率很低,因为对于每个字符,您必须解析字符串的其余部分。

但是您确实要求使用正则表达式来完成这项工作=)

于 2012-10-07T13:55:54.547 回答
0
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))
于 2012-10-07T13:16:38.447 回答