有一个好的方法记忆就是后面什么都没跟的就是贪婪的,跟一个"?"的是惰性的,跟一个"+"的是支配性的。浏览器对支配性的不是很好,IE和Firef和Ghrome都不支持
都会出现错误。下面看实例
var str = "abbbaabbbaaabbb1234";
var patt1 = /.*bbb/g; //贪婪的 得到结果 ["abbbaabbbaaabbb"]
var patt2 = /.*?bbb/g; //惰性的 得到结果 ["abbb", "aabbb", "aaabbb"]
try{
var patt3 = /.*\+bbb/g; //支配性的 都不支持,本来是为false的
console.log(str.test(patt3))
}catch(e){
console.log("e")
}
console.log(str.match(patt1))
console.log(str.match(patt2))
怎么理解贪婪和惰性,这个从字面上去理解就是贪婪的总是企图要匹配整个字符串,而惰性的只要匹配出结果就行了。一个大的特点是:贪婪的是从字符串后面开始匹配
从后面到前面,如果有匹配的了就再也不匹配了。而惰性的是从前面开始匹配,找到匹配的了。记录下匹配结果,又从下面一个字符开始匹配。直到字符串最后。