所謂貪婪匹配就是匹配重復(fù)字符是盡可能多的匹配,比如:
"aaaaa".match(/a+/); //["aaaaa", index: 0, input: "aaaaa"]
非貪婪匹配就是盡可能少的匹配,用法就是在量詞后面加上一個(gè)“?”,比如:
"aaaaa".match(/a+?/); //["a", index: 0, input: "aaaaa"]
但是非貪婪匹配有時(shí)候和我們期待的并不一樣,比如:
"aaab".match(/a+b/); ["aaab", index: 0, input: "aaab"] "aaab".match(/a+?b/); ["aaab", index: 0, input: "aaab"]
在我們期待的情況下非貪婪匹配應(yīng)該是匹配"ab"才對(duì)但是結(jié)果卻和貪婪匹配時(shí)一樣的。
在《權(quán)威指南》中有這么一句話:正則表達(dá)式的模式匹配總是會(huì)尋找字符串中第一個(gè)可能匹配的位置。
個(gè)人對(duì)這句話的理解是:上例中正則表達(dá)式會(huì)先找到第一個(gè)字符a,因?yàn)閍后面連接的字符有可能形成匹配,這是正則表達(dá)式就認(rèn)定這個(gè)位置的字符了,然后開始往后進(jìn)行匹配,如果像第一個(gè)例子中那樣非貪婪匹配,匹配到第一個(gè)a就結(jié)束了,但是第二個(gè)例子中還要匹配b所以不得不接著往下匹配直到匹配到b為止結(jié)束。
總結(jié)
以上所述是小編給大家介紹的JavaScript正則表達(dá)式的貪婪匹配和非貪婪匹配,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)錯(cuò)新站長(zhǎng)站網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選