本文實例講述了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中文網!