当正则表达式中包含重复元字符比如“*”、“+”,都会匹配尽可能多的字符,如“a.*b”,最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
有时候我们希望尽可能少的匹配满足条件的字符,我们称为 懒惰匹配。只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
var patt=/a.*?b/g var str="aabab" console.log(str.match(patt)) //匹配到 aab 和 ab
*?:重复任意次,但是尽可能少的重复
+?:重复至少1次,,但是尽可能少的重复
??:重复0或者1次,,但是尽可能少的重复
{n,m}?:重复n-m次,但是尽可能少的重复
var patt=/a.+?b/g var str="aabab" console.log(str.match(patt)) //匹配到aab
var patt=/a.??b/g var str="aabbbab" console.log(str.match(patt)) //匹配到aab 和 ab