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