在Javascript中使用replace方法插入的正则表达式

时间:2013-09-12 01:56:39

标签: javascript regex

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

我有这个,如果我把

 var num1 = 123456789;
 var num2 = 10000; 

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

2 个答案:

答案 0 :(得分:2)

正则表达式由两个零宽度断言组成:\B,匹配字边界的任何位置,(?=(\d{3})+(?!\d)),匹配任何后跟的位置(\d{3})+(?!\d)。因此正则表达式匹配一个空(长度为零)的子字符串。 “删除”该子字符串将不起作用,因此“替换”它只会插入替换字符串。

答案 1 :(得分:0)

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

var num = '12345678';
var res = num.replace(/\B(?=(\d{3})+$)/g, ',');
// res -> 12,345,678