貪婪模式
先看那個例子
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"