扫码关注官方订阅号
如题,整数部分每三个加一个逗号分隔,求解析
num.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
走同样的路,发现不同的人生
这个正则表达式不是匹配的字符,而是“位置”?=作用的范围就是我标红的两个括号\B(?=(\d{3})+(?!\d))它的意思是什么呢?就是说我要匹配的这个“位置”,它后面应该是一下内容——三个数字为一组,有若干个这样的组,且这样的组匹配结束后,后面没有数字了,匹配出来的位置如图(虚线表示):于是替换的结果,就是在这些虚线所代表的位置上插入,
?=
(
)
,
可能是不懂里面的 ?= 吧。
?=
非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
放在括号里面用来做位置指定。
(?=exp) 匹配exp前面的位置:
(?=exp)
(?=exp)也叫零宽先行断言,它匹配文本中的某些位置,这些位置的后面能匹配给定的后缀 exp。比如 \b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如果在查找I'm singing while you're dancing.时,它会匹配sing和danc。
\b\w+(?=ing\b)
ing
I'm singing while you're dancing.
sing
danc
(?!exp) 匹配后面跟的不是exp的位置。
(?!exp)
在 /\B(?=(\d{3})+(?!\d))/g 中,正则表达式匹配了 3 个连续数字之前的位置。
/\B(?=(\d{3})+(?!\d))/g
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这个正则表达式不是匹配的字符,而是“位置”

?=作用的范围就是我标红的两个括号\B
(?=(\d{3})+(?!\d))它的意思是什么呢?
就是说我要匹配的这个“位置”,它后面应该是一下内容——三个数字为一组,有若干个这样的组,且这样的组匹配结束后,后面没有数字了,匹配出来的位置如图(虚线表示):
于是替换的结果,就是在这些虚线所代表的位置上插入
,可能是不懂里面的
?=吧。放在括号里面用来做位置指定。
(?=exp)匹配exp前面的位置:(?=exp)也叫零宽先行断言,它匹配文本中的某些位置,这些位置的后面能匹配给定的后缀 exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如果在查找I'm singing while you're dancing.时,它会匹配sing和danc。(?!exp)匹配后面跟的不是exp的位置。在
/\B(?=(\d{3})+(?!\d))/g中,正则表达式匹配了 3 个连续数字之前的位置。