貪婪模式和非貪婪模式

貪婪模式
先看那個例子

var str = 'a ''witch" and her "broom" is one';
str.match(/".*"/g)
//[""witch" and her "broom""]

得到的是[""witch" and her "brom""],而并不是我們之前想到的"witch"和"broom",因為js的引擎在運行的時候,首先匹配雙引號,匹配到開頭的雙引號,然后匹配
".*"(也就是除了回車和換行之外的所有字符),因為js引擎的機制會一直從a運行到e,這個時候才會匹配到最后的雙引號,這個時候js引擎開始從最后往前匹配,匹配到的第一個雙引號就作為數(shù)組元素的最后一個雙引號,所以匹配到的是[""witch" and her "brom""]。這就是貪婪模式。
非貪婪模式
非貪婪模式與貪婪模式相反,通過在代表數(shù)量的標識符后面放置?來開啟非貪婪模式,?的作用就是盡量的減少匹配。
看個例子

var str = 'a ''witch" and her "broom" is one';
str.match(/".*"/g)
//[""witch"", ""brom""]
得到的是"witch"和"brom"
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容