js正則表達式 (.+)與(.+?)


(.+)默認是貪婪匹配

(.+?)為惰性匹配

疑問號讓.+的搜索模式從貪婪模式變成惰性模式。

var str = 'aaa<div style="font-color:red;">123456</div>bbb'

<.+?>會匹配<div style="font-color:red;">

<.+>會匹配<div style="font-color:red;">123456</div>

要在瀏覽器測試結果的話,輸入:

var str = 'aaa<div style="font-color:red;">123456</div>bbb'

str.match(/<.+?>/);

str.match(/<.+>/);

下面舉個簡單的例子來說明。

1.貪婪匹配是先看整個字符串是否匹配,如果不匹配,它會去掉字符串的最后一個字符,並再次嘗試。如果還不匹配,那么再去掉當前最后一個,直到發現匹配或不剩任何字符。

var str='abcdabceba'

/.+b/ //匹配一個或多個任意字符后面跟一個字母b

執行str.match(/.+b/)

第一次(先看整個字符串是否是一個匹配) abcdabceba 不匹配,然后去掉最后一個字符a

第二次(去掉最后一個字符后再匹配) abcdabceb 匹配,返回abcdabceb。

2.惰性匹配是從左側第一個字符開始向右匹配, 先看第一個字符是不是一個匹配, 如果不匹配就加入下一個字符再嘗式匹配, 直到發現匹配...

執行str.match(/.+?b/)

第一次(讀入左側第一個字符) a 不匹配加一個再式

第二次 ab 匹配,返回ab


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM