美文网首页
正则 JS下的贪婪模式与懒惰模式

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

作者: 方_糖 | 来源:发表于2021-03-23 20:18 被阅读0次

正则测试链接: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

相关文章

网友评论

      本文标题:正则 JS下的贪婪模式与懒惰模式

      本文链接:https://www.haomeiwen.com/subject/cigfhltx.html