1.正則表達式中的 .+*?


1.正則表達式中 .* 與 .*?

是貪婪匹配與非貪婪匹配的區別。

比如說匹配輸入串A: 101000000000100

使用 1.*1 將會匹配到1010000000001, 匹配方法: 先匹配至輸入串A的最后, 然后向前匹配, 直到可以匹配到1, 稱之為貪婪匹配。

使用 1.?1 將會匹配到101, 匹配方法: 匹配下一個1之前的所有字符, 稱之為非貪婪匹配。

所有帶有量詞的都是非貪婪匹配: .*?, .+?, .{2,6}? 甚至 .??

 

較為常用的元字符包括: “+”, “*”,以及 “?”。

“+”元字符規定其前導字符必須在目標對象中連續出現一次或多次。

“*”元字符規定其前導字符必須在目標對象中出現零次或連續多次。

“?”元字符規定其前導對象必須在目標對象中連續出現零次或一次。

后邊多一個?表示懶惰模式。
必須跟在*或者+后邊用
如:<img src="test.jpg" width="60px" height="80px"/>
如果用正則匹配src中內容非懶惰模式匹配
src=".*"
匹配結果是:src="test.jpg" width="60px" height="80px"
意思是從="往后匹配,直到最后一個"匹配結束

懶惰模式正則:
src=".*?"
結果:src="test.jpg"
因為匹配到第一個"就結束了一次匹配。不會繼續向后匹配。因為他懶惰嘛。

.表示除\n之外的任意字符
*表示匹配0-無窮


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(/<.+>/);

 


免責聲明!

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



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