正則 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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容