Math.round(num1/num2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
我有这个,如果我把
var num1 = 123456789;
var num2 = 10000;
我得到 12,346,但我不明白它是如何使用替换方法工作的。replace() 方法不会替换某些东西,这意味着必须删除一个字符吗?但是这个函数怎么能在字符之间插入逗号呢?我一一理解正则表达式,但不明白它是如何工作的。谢谢!
Math.round(num1/num2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
我有这个,如果我把
var num1 = 123456789;
var num2 = 10000;
我得到 12,346,但我不明白它是如何使用替换方法工作的。replace() 方法不会替换某些东西,这意味着必须删除一个字符吗?但是这个函数怎么能在字符之间插入逗号呢?我一一理解正则表达式,但不明白它是如何工作的。谢谢!
正则表达式由两个零宽度断言组成:\B
,它匹配任何不是单词边界的位置,以及(?=(\d{3})+(?!\d))
,它匹配任何紧随其后的位置(\d{3})+(?!\d)
。所以正则表达式匹配一个空的(长度为零)子字符串。“删除”该子字符串不会有任何效果,因此“替换”它的效果只是插入替换字符串。
请注意,该模式可以替换为:
var num = '12345678';
var res = num.replace(/\B(?=(\d{3})+$)/g, ',');
// res -> 12,345,678