JS正則表達式從入門到入土(6)—— 貪婪模式與非貪婪模式


貪婪模式

之前說了正則的量詞,但是量詞會帶來一個到底該匹配哪個的問題。

如下正則表達式:

\d{3,6}

這個正則表達式是匹配3到6個數字,但是當這個正則表達式被用來匹配12345678這個字符串,到底該匹配三個數字還是6個數字,亦或者是都不是?

可以先試試:

let text = '12345678'
let reg = /\d{3,6}/g
text.replace(reg, 'X')		// X78

可以看到該正則將123456六個數字替換為了X,也就是說,在正常模式下,正則表達式會盡可能多的匹配。

正常情況下,正則表達式采用貪婪模式,即,盡可能多的匹配。

非貪婪模式

但是,有時我們需要正則表達式盡可能少的匹配,也就是說,一旦成功匹配不再繼續嘗試,這就是非貪婪模式。那么,如何進入非貪婪模式呢?

做法很簡單,在量詞后加上?即可。

let text = '12345678'
let reg = /\d{3,6}?/g
text.replace(reg, 'X')		// X45678

可以發現,在非貪婪模式下,該正則只匹配了123,即最少匹配。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM