首頁 > web前端 > js教程 > 主體

js正規表示式惰性匹配和貪婪匹配用法分析

高洛峰
發布: 2017-01-09 16:37:07
原創
1385 人瀏覽過

本文實例講述了js正規表示式惰性匹配和貪婪匹配用法。分享給大家供大家參考,具體如下:

在講貪婪模式和惰性模式之前,先回顧一下JS正規基礎:

寫法基礎:

①不需要雙引號,直接用//包含=> /wehfwue123123 /.test();

②反斜線表示轉義=>/.jpg$/

③用法基礎:.test(str);

語法:

①錨點類

錨點類

=>以"a"開頭

/.jpg$/=>以".jpg"結尾

②字符類

[abc]:a或b或c

[0-9]:一個數字

[a-z]:一個字母

.    :任意字元

③元字元

^:在[]裡面用表示非,在[]外面用表示開頭

d:[0-9]

w:[A-Za-z0-9_]

D:[^d]-非數字

S:非空白符號

④量詞

{m,n}:m

④量詞

{m,n}:m到n元字符表示:

*:{0,}

?:{0,1}

+:{1,}

難點:貪婪模式/惰性模式

貪婪模式-在匹配成功的前提下,盡可能少的去匹配

惰性模式——在匹配成功的前提下,盡可能少的去匹配

解釋一:碼文並茂

使用正則表達式中的貪婪、惰性的量詞可以控製表達式配對過程,我們知道量詞? 、*、+的意義,可以指定相關模式出現的次數,預設的情況下我們使用的是貪婪量詞,它的匹配過程是從整個字串開始查看,如果不匹配就去掉最後一個,再看看是否匹配,如此循環一直到匹配或字符串空為止,如:

vars ="abbbaabbbaaabbb1234";
varre1=/.*bbb/g;//*是贪婪量词
re1.test(s);
登入後複製

   

這個匹配過程將從整個字符串開始:

re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续
re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续
re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续
re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续
re1.test("abbbaabbbaaabbb");//true ,结束
登入後複製

   

?成了惰性量詞,它的匹配過程相反,是從前面第一個開始,不匹配則加一個,如此循環直到字符串結束,以上面的為例子。

vars ="abbbaabbbaaabbb1234";
varre1=/.*?bbb/g;//*?是惰性量词
re1.test(s);
登入後複製

   

它的配對過程如下:

re1.test("a");//false, 再加一个
re1.test("ab");//false, 再加一个
re1.test("abb");//false, 再加一个
re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始
re1.test("a");//false, 再加一个
re1.test("aa");//false, 再加一个
re1.test("aab");//false, 再加一个
re1.test("aabb");//false, 再加一个
re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始
登入後複製

   

小結:

我是從一個長度配對後的相匹配是從後的貪婪相符,在最大的匹配量相匹配?從字串的前面開始匹配,最小長度的匹配

希望本文所述對大家JavaScript程式設計有所幫助。

更多js正規表示式惰性匹配和貪婪匹配用法分析相關文章請關注PHP中文網!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!