贪婪模式和非贪婪模式

贪婪模式
先看那个例子

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引擎开始从最后往前匹配,匹配到的第一个双引号就作为数组元素的最后一个双引号,所以匹配到的是[""witch" and her "brom""]。这就是贪婪模式。
非贪婪模式
非贪婪模式与贪婪模式相反,通过在代表数量的标识符后面放置?来开启非贪婪模式,?的作用就是尽量的减少匹配。
看个例子

var str = 'a ''witch" and her "broom" is one';
str.match(/".*"/g)
//[""witch"", ""brom""]
得到的是"witch"和"brom"
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容