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

关于js正则表达式的问题。。

关于js正则表达式的问题。。

紫衣仙女 2019-02-05 19:51:40
var str = 'For more information, see Chapter 3.4.5.1';var re = /see (chapter \d+(\.\d)*)/i;var found = str.match(re);console.log(found);为什么(\.\d)最后匹配的是.1呢,不应该是.4.5.1吗?不然说不通啊。请大神指正。。
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

这个问题与正则表达式的贪婪模式有关。(\.\d)*这样的正则写法,默认就会采用贪婪模式,它的机制是,只要捕获到满足匹配的字符,就会接着继续往后捕获,直到不满足匹配为止,所以在匹配字符.4.5.1时,第一次会匹配到.4,第二次.5,第三次.1,以最后一次匹配到的返回。

不知道题主是不是看了MDN上的这个地方问到的,在这个例子里的输出解释里有这么一句点破了这个问题,只是它没有进一步解释贪婪模式。

// '.1' 是被'(\.\d)'捕获的最后一个值。


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信