正则 JS下的贪婪模式与懒惰模式

正则测试链接:https://regex101.com/

今天处理一个字符串问题的时候,使用了很久没用了的正则,遇到了一些之前不知道的一些正则知识,故此记录一下。问题如下:

将字符串"123<img src="xx" />1234"所有文字都加上span标签,
转换为"<span>123</span><img src="xx" /><span>1234</span>"

我的想法是找到所有的img标签,然后将<img src="xx" />两边加上span标签,最后在处理完后的字符串最前面加上<span>最后面加上</span>哦。
但是最后发现,在匹配img标签时,如果有多个img标签,就会出现下图的现象(第一个img开头到最后一个img结尾,只能匹配到一个,而不是多个img标签)

image.png

后面我尝试使用其他的修饰符,发现/U(Ungreedy:懒惰模式),可以满足我的要求
image.png

但是,JS并不支持/U修饰符!!*
那要怎么才能开启懒惰模式呢?
最后我发现:使用?元字符可以开启懒惰模式

image.png

一、贪婪模式

正常我们写正则表达式时直接使用下图元字符时,都为贪婪模式


image.png

贪婪模式会尽可能的匹配更多的内容:(以123333举例)

1、能多匹配就多匹配
image.png
2、{1,3}能匹配三次绝不匹配一次
image.png

一、懒惰模式

贪婪模式使用到的元字符+?就是懒惰模式

1、能不匹配就不匹配
image.png
2、能只匹配一个绝不匹配三个
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容