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

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吗?不然说不通啊。

请大神指正。。


紫衣仙女
浏览 427回答 1
1回答

HUWWW

这个问题与正则表达式的贪婪模式有关。(\.\d)*这样的正则写法,默认就会采用贪婪模式,它的机制是,只要捕获到满足匹配的字符,就会接着继续往后捕获,直到不满足匹配为止,所以在匹配字符.4.5.1时,第一次会匹配到.4,第二次.5,第三次.1,以最后一次匹配到的返回。不知道题主是不是看了MDN上的这个地方问到的,在这个例子里的输出解释里有这么一句点破了这个问题,只是它没有进一步解释贪婪模式。// '.1' 是被'(\.\d)'捕获的最后一个值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript