所謂貪婪匹配就是匹配重復(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"才對但是結(jié)果卻和貪婪匹配時(shí)一樣的。
在《權(quán)威指南》中有這么一句話:正則表達(dá)式的模式匹配總是會(huì)尋找字符串中第一個(gè)可能匹配的位置。
個(gè)人對這句話的理解是:上例中正則表達(dá)式會(huì)先找到第一個(gè)字符a,因?yàn)閍后面連接的字符有可能形成匹配,這是正則表達(dá)式就認(rèn)定這個(gè)位置的字符了,然后開始往后進(jìn)行匹配,如果像第一個(gè)例子中那樣非貪婪匹配,匹配到第一個(gè)a就結(jié)束了,但是第二個(gè)例子中還要匹配b所以不得不接著往下匹配直到匹配到b為止結(jié)束。
總結(jié)
以上所述是小編給大家介紹的JavaScript正則表達(dá)式的貪婪匹配和非貪婪匹配,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com