这个正则后面那个(?=(\d{3}+\.))
不是只能匹配一次前面的12000000000
吗?
为什么还能继续匹配前面的?
前面那些不是没有.
吗,怎么就符合了?
不是很理解你哪里不理解,说下这个正则吧。
这个正则/(\d)(?=(\d{3})+\.)/
的意思是捕获.
前面的3的倍数个数字前面的1个数字。
你的疑惑可能是因为没有看清楚(\d{3})+
里面的+
吧。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
表则表达式
/(\d)(?=(\d{3})+\.)/g
先解答题主最关心的问题,这里出现多次匹配,出现是
/g
修饰符的作用,来直接看下/g
的解释:/g
修饰符代表全局匹配,查找所有匹配而非在找到第一个匹配后停止。然后分解下正则表达式各段的意思,把表达式分为三部分
(\d)
- 匹配左边是一个数字且捕获,标记为1(\d{3})+\.
- 以.
符号结尾的,并且3个连续的数字为组,多次重复且尽可能多的匹配到(贪婪模式),且至少匹配中连续的3个连续数字1次以上,且捕获,标记为2(?=regexp)
-(?=)
表示零宽度正预测先行断言,断言自身出现的位置的后面能匹配表达式。结合1)和2)就是说:我只想匹配一个任意的数字(称为目标数字),但我希望这个数字串的末尾是以.
号结尾的,并且希望这个目标数字和.
之间的部分是任意数量的3个数字成对出现的。