为了账号安全,请及时绑定邮箱和手机立即绑定

这种正则怎么匹配的?

这种正则怎么匹配的?

德玛西亚99 2019-03-04 08:15:31
这个正则后面那个(?=(\d{3}+\.))不是只能匹配一次前面的12000000000吗?为什么还能继续匹配前面的?前面那些不是没有.吗,怎么就符合了?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

表则表达式/(\d)(?=(\d{3})+\.)/g

不是只能匹配一次前面的12000000000吗?

先解答题主最关心的问题,这里出现多次匹配,出现是/g修饰符的作用,来直接看下/g的解释:/g修饰符代表全局匹配,查找所有匹配而非在找到第一个匹配后停止

然后分解下正则表达式各段的意思,把表达式分为三部分

  1. (\d) - 匹配左边是一个数字且捕获,标记为1

  2. (\d{3})+\. - 以.符号结尾的,并且3个连续的数字为组,多次重复且尽可能多的匹配到(贪婪模式),且至少匹配中连续的3个连续数字1次以上,且捕获,标记为2

  3. (?=regexp) - (?=)表示零宽度正预测先行断言,断言自身出现的位置的后面能匹配表达式。结合1)和2)就是说:我只想匹配一个任意的数字(称为目标数字),但我希望这个数字串的末尾是以.号结尾的,并且希望这个目标数字和.之间的部分是任意数量的3个数字成对出现的。


查看完整回答
反对 回复 2019-03-19
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

不是很理解你哪里不理解,说下这个正则吧。
这个正则/(\d)(?=(\d{3})+\.)/的意思是捕获.前面的3的倍数个数字前面的1个数字。
你的疑惑可能是因为没有看清楚(\d{3})+里面的+吧。

查看完整回答
反对 回复 2019-03-19
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

模式修饰符/g会找到所有可匹配的。


/(\d)(?=(\d{3})+\.)/g

整个表达式的含义:匹配一个数,其后跟着3*n个数加"."。(n是正整数)


查看完整回答
反对 回复 2019-03-19
  • 3 回答
  • 0 关注
  • 532 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号