"115000000".split("").reverse().join("").replace(/(\d{3})(?=[^$])/g, "$1,").split("").reverse().join("");
在网上找到了一种解法,可是有个地方没明白。如下:
replace(/(\d{3})(?=[^$])/g, "$1,")
这里的(?=[^$])有什么作业??难道就 replace(/(\d{3})/g, "$1,")不可以吗??
麻烦大家看看,帮我解答下,,蟹蟹
可以理解为
?=
是一个狂妄的预言家,假设有正则/abc?=xxx/
,它预言自己出现的位置后面一定、肯定、必须、只能是xxx
,如果不是,那它会以死明志的(就是匹配失败)。那么:
1.
(?=[^$])
会匹配除字符除末尾所有的位置2.
/(\d{3})(?=[^$])/
会匹配连续的三个数字,并且这三个数字不能在字符串的末尾3. 题主疑问的
replace(/(\d{3})/g, "$1,")
,如果字符串长度刚好是三的倍数,那最后三个字符后也会加上逗号。比如123456789.replace(/(\d{3})/g, "$1,"); // 123,456,789,