正則測試鏈接: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