"115000000".split("").reverse().join("").replace(/(\d{3})(?=[^$])/g,"$1,").split("").reverse().join("");在网上找到了一种解法,可是有个地方没明白。如下:replace(/(\d{3})(?=[^$])/g,"$1,")这里的(?=[^$])有什么作业??难道就replace(/(\d{3})/g,"$1,")不可以吗??麻烦大家看看,帮我解答下,,蟹蟹
2 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。可以理解为?=是一个狂妄的预言家,假设有正则/abc?=xxx/,它预言自己出现的位置后面一定、肯定、必须、只能是xxx,如果不是,那它会以死明志的(就是匹配失败)。那么:1.(?=[^$])会匹配除字符除末尾所有的位置2./(\d{3})(?=[^$])/会匹配连续的三个数字,并且这三个数字不能在字符串的末尾3.题主疑问的replace(/(\d{3})/g,"$1,"),如果字符串长度刚好是三的倍数,那最后三个字符后也会加上逗号。比如123456789.replace(/(\d{3})/g,"$1,");//123,456,789,
添加回答
举报
0/150
提交
取消
