我有一个像“7847258998”的数字,我想用javascript中的百个逗号分隔符打印。 结果应该是:
7,84,72,58,998
,即右边的前三位数应该组合在一起。剩余的数字按照2的块分组。我尝试了以下内容:
"7847258998".replace(/\B(?=(\d{3})+(\d{2})+(?!\d))/g, ",")
但它返回:7,8,4,72,58998
。什么是正确的表达方式?
答案 0 :(得分:3)
试试这个:
"7847258998".replace(/\B(?=(\d{2})*(\d{3})$)/g, ",");
我在前瞻中匹配字符串的结尾,这样我总能找到理智的东西。除此之外几乎所有匹配。
测试输入长度1-10 ..足以确定它可能有效。虽然效率很低,但是每个字符都需要解析其余的字符串。
但你 要求一个正常的表达式来完成这项工作=)
答案 1 :(得分: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))