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

有谁能跟我讲解下这个正则表达式吗

有谁能跟我讲解下这个正则表达式吗

守着一只汪 2019-03-14 18:15:45
/(?=(?!(\b))(\d{3})+$)/g
查看完整描述

3 回答

?
繁华开满天机

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

就这么说吧 光是这正则匹配不到任何东西

  • ?= 零宽度正先行断言

示例

?=exp匹配得后面是exp结尾的

xx(?=exp) 匹配后面是exp的xx

但是题中的正则之后?=exp部分.没有预匹配项,所以无结果

  • (?!) 零宽度负先行断言

示例
?=exp匹配得后面不是 exp结尾的
xx(?!exp) 匹配后面不是 exp的xx

总结来说就是一个 不是单词边界(出现在单词中间)的三位数字且以它为结尾.匹配1次或更多次的 **

上面一句话中的 ** 应该是写在 这个位置(?=(?!(\b))(\d{3})+$)

所以 这个正则什么都匹配不到.可能也就是空白或者空字符

=====================================
补充:

(?!(\b))(\d{3})+$
既然不是在单词边界的三位数字.那么可能出现的情况如下

wo111rd

但是后面有个$ $表示结尾

那就是既要在中间.还要以它结尾. 这逻辑本身不对吧 
还是我理有误.

若有误还请指出


查看完整回答
反对 回复 2019-04-14
?
慕容森

TA贡献1853条经验 获得超18个赞

空字符后面跟着 (?= 表示跟着), 不能是单词开始 (?!向后否定), 在跟着 3个数字为一组的 多组数字直至字符结尾
这是数字格式化吧, 没考虑小数的情况

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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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