JavaScript正則表達式的貪婪匹配和非貪婪匹配
所謂貪婪匹配就是匹配重復(fù)字符是盡可能多的匹配,比如:
"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"]
在我們期待的情況下非貪婪匹配應(yīng)該是匹配"ab"才對但是結(jié)果卻和貪婪匹配時一樣的。
在《權(quán)威指南》中有這么一句話:正則表達式的模式匹配總是會尋找字符串中第一個可能匹配的位置。
個人對這句話的理解是:上例中正則表達式會先找到第一個字符a,因為a后面連接的字符有可能形成匹配,這是正則表達式就認(rèn)定這個位置的字符了,然后開始往后進行匹配,如果像第一個例子中那樣非貪婪匹配,匹配到第一個a就結(jié)束了,但是第二個例子中還要匹配b所以不得不接著往下匹配直到匹配到b為止結(jié)束。
總結(jié)
以上所述是小編給大家介紹的JavaScript正則表達式的貪婪匹配和非貪婪匹配,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解webpack-dev-server 設(shè)置反向代理解決跨域問題
后端只負(fù)責(zé)接口,前端負(fù)責(zé)數(shù)據(jù)展示、邏輯處理。那么如何跨域?這篇文章主要介紹了webpack-dev-server 設(shè)置反向代理解決跨域問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04微信小程序網(wǎng)絡(luò)請求模塊封裝的具體實現(xiàn)
大家做小程序項目的時候肯定會遇到數(shù)據(jù)對接需求,下面這篇文章主要給大家介紹了關(guān)于微信小程序網(wǎng)絡(luò)請求模塊封裝的具體實現(xiàn),文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03鼠標(biāo)拖動動態(tài)改變表格的寬度的js腳本 兼容ie/firefox
table拖動(兼容Firefox 3.5/IE6),固定表格寬度在網(wǎng)上搜索了好久,找到的都是只能在IE下有效的,后來終于找到了支持firefox的了。2009-12-12JavaScript學(xué)習(xí)筆記(三):JavaScript也有入口Main函數(shù)
大家都知道在c和java中,有main函數(shù)貨main方法作為一個程序的入口函數(shù)或方法。在JS中從js源文件的頭部開始運行的,我們?nèi)匀豢梢蕴摌?gòu)出一個main函數(shù)來作為程序的起點,這樣一來不僅可以跟其他語言統(tǒng)一了,而且說不定你會對JS有更深的理解。感興趣的小伙跟著小編一起學(xué)習(xí)吧2015-09-09js中textContent、innerText和innerHTML的用法以及區(qū)別
這篇文章主要介紹了JavaScript中textContent、innerText和innerHTML的用法以及區(qū)別,需要的朋友可以參考下2023-05-05JavaScript中的property和attribute介紹
JavaScript中的property和attribute介紹,需要的朋友可以參考下。2011-12-12