2
    Math.round(num1/num2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")

我有这个,如果我把

 var num1 = 123456789;
 var num2 = 10000; 

我得到 12,346,但我不明白它是如何使用替换方法工作的。replace() 方法不会替换某些东西,这意味着必须删除一个字符吗?但是这个函数怎么能在字符之间插入逗号呢?我一一理解正则表达式,但不明白它是如何工作的。谢谢!

4

2 回答 2

2

正则表达式由两个零宽度断言组成:\B,它匹配任何不是单词边界的位置,以及(?=(\d{3})+(?!\d)),它匹配任何紧随其后的位置(\d{3})+(?!\d)。所以正则表达式匹配一个空的(长度为零)子字符串。“删除”该子字符串不会有任何效果,因此“替换”它的效果只是插入替换字符串。

于 2013-09-12T02:21:05.793 回答
0

请注意,该模式可以替换为:

var num = '12345678';
var res = num.replace(/\B(?=(\d{3})+$)/g, ',');
// res -> 12,345,678
于 2013-09-12T02:24:16.993 回答