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

/\B(?=(\d{3})+(?!\d))/g这段正则如何理解,特别是那个 ‘+’ 号

/\B(?=(\d{3})+(?!\d))/g这段正则如何理解,特别是那个 ‘+’ 号

米脂 2019-02-28 18:42:59
网上看了个千分位转换的正则,想了半天没想明白,为什么那个 + 要写在那里,别的位置就不行了。
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

\B匹配非单词边界;
\d匹配一个数字;
+是量词,表示前面的内容重复1到多次
?=是预言,表示这个位置后面的内容需要满足的条件,注意只是匹配一个位置,并不匹配具体的字符,所以是零宽;
?!也是预言,表示这个位置后面的内容不能满足的条件,注意也只是匹配一个位置,并不匹配具体的字符,所以也是零宽;

\d{3}匹配三个数字,+表示前面的内容重复1到多次,所以(\d{3})+表示三个数字1到多次,也就是3,6,9...3的倍数个数字的字符串;
(?!\d)匹配一个位置,这个位置后面不是数字
(?=(\d{3})+(?!\d))匹配一个位置,这个位置后面首先是3的倍数个数字的字符串,接下来的位置不是数字
/\B(?=(\d{3})+(?!\d))/g就是全局匹配一个位置,这个位置是非单词边界,然后后面是3的倍数个数字,然后是非数字

比如,字符串ad12345678abs,这个正则匹配的位置就是2后面的位置,5后面的位置。2后面6(3 * 2)个数字,5后面有3(3 * 1)个数字。


查看完整回答
3 反对 回复 2019-03-05
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

(\d{3})+

是一个分组,表示分组(d{3})可以出现多次。


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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