Math.round(num1/num2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
我有这个,如果我把
var num1 = 123456789;
var num2 = 10000;
我得到12,346但是我不明白它是如何使用替换方法的。不替换replace()方法替换某些东西,这意味着必须删除一个字符?但是为什么这个函数可以在字符之间插入逗号?我逐一理解正则表达式,但不明白它是如何工作的。谢谢!
答案 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