Chrome告诉“无效群组”'使用正则表达式格式化数字

时间:2015-01-20 07:22:08

标签: javascript regex

我试图将“123456”这样的号码变成“123,456”。 我的原始代码是

number.replace(/(?=(?:\d{3})+(?!\d))/g,',')

当数字大小不是三的倍数时,它可以正常工作。

所以我尝试添加(?<=\d)以确保不会在开头添加逗号。但是Chrome表示它是无效的正则表达式

number.replace(/(?=(?<=\d)(?:\d{3})+(?!\d))/g,',')

那么格式化数字的正确表达式是什么?

更新:

解决了逗号的问题。

但我仍然不明白为什么表达式会抛出错误。这些括号是配对的。

var number = "123456"; number = number.replace(/(?=(?<=\d)(?:\d{3})+(?!\d))/g,',') `

1 个答案:

答案 0 :(得分:0)

n.toFixed(2).replace(/./g, function(c, i, a) {
    return i && c !== "." && ((a.length - i) % 3 === 0) ? ',' + c : c;
});

参考:How can I format numbers as money in JavaScript?