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

后面我尝试使用其他的修饰符,发现
/U
(Ungreedy:懒惰模式),可以满足我的要求
但是,JS并不支持/U
修饰符!!*
那要怎么才能开启懒惰模式呢?
最后我发现:使用?
元字符可以开启懒惰模式

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

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

2、{1,3}
能匹配三次绝不匹配一次

一、懒惰模式
贪婪模式使用到的元字符+?
就是懒惰模式
1、能不匹配就不匹配

2、能只匹配一个绝不匹配三个

网友评论