国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

js正則表達(dá)式惰性匹配和貪婪匹配用法分析

2019-11-19 18:16:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了js正則表達(dá)式惰性匹配和貪婪匹配用法。分享給大家供大家參考,具體如下:

在講貪婪模式和惰性模式之前,先回顧一下JS正則基礎(chǔ):

寫法基礎(chǔ):

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

②反斜杠/表示轉(zhuǎn)義 =>//.jpg$/

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

語(yǔ)法:

①錨點(diǎn)類

/^a/=>以"a"開頭

//.jpg$/=>以".jpg"結(jié)尾

②字符類

[abc]:a或b或c

[0-9]:一個(gè)數(shù)字

[a-z]:一個(gè)字母

.    :任意字符

③元字符

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

/d:[0-9]

/s:空白符

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

/D:[^/d]-非數(shù)字

/S:非空白符

④量詞

{m,n}:m到n次

元字符表示:

*:{0,}

?:{0,1}

+:{1,}

難點(diǎn):貪婪模式/惰性模式

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

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

解釋一:碼文并茂

使用正則表達(dá)式中的貪婪、惰性的量詞可以控制表達(dá)式匹配過(guò)程,我們知道量詞?、*、+的意義,可以指定相關(guān)模式出現(xiàn)的次數(shù),默認(rèn)的情況下我們使用的是貪婪量詞,它的匹配過(guò)程是從整個(gè)字符串開始查看,如果不匹配就去掉最后一個(gè),再看看是否匹配,如此循環(huán)一直到匹配或字符串空為止,如:

vars ="abbbaabbbaaabbb1234";varre1=/.*bbb/g;//*是貪婪量詞re1.test(s);

這個(gè)匹配過(guò)程將從整個(gè)字符串開始:

re1.test("abbbaabbbaaabbb1234");//false ,則去掉最后一個(gè)字符4再繼續(xù)re1.test("abbbaabbbaaabbb123");//false ,則去掉最后一個(gè)字符3再繼續(xù)re1.test("abbbaabbbaaabbb12");//false ,則去掉最后一個(gè)字符2再繼續(xù)re1.test("abbbaabbbaaabbb1");//false ,則去掉最后一個(gè)字符1再繼續(xù)re1.test("abbbaabbbaaabbb");//true ,結(jié)束

在貪婪量詞的后面加多一個(gè)?就變成了惰性量詞,它的匹配過(guò)程相反,是從前面第一個(gè)開始,不匹配則加一個(gè),如此循環(huán)直到字符串結(jié)束,以上面的為例子。

vars ="abbbaabbbaaabbb1234";varre1=/.*?bbb/g;//*?是惰性量詞re1.test(s);

它的匹配過(guò)程如下:

re1.test("a");//false, 再加一個(gè)re1.test("ab");//false, 再加一個(gè)re1.test("abb");//false, 再加一個(gè)re1.test("abbb");//true, 匹配了,保存這個(gè)結(jié)果,再?gòu)南乱粋€(gè)開始re1.test("a");//false, 再加一個(gè)re1.test("aa");//false, 再加一個(gè)re1.test("aab");//false, 再加一個(gè)re1.test("aabb");//false, 再加一個(gè)re1.test("aabbb");//true, 匹配了,保存這個(gè)結(jié)果,再?gòu)南乱粋€(gè)開始

小結(jié):

默認(rèn)的貪婪匹配是從后往前匹配,最大長(zhǎng)度的匹配,惰性匹配就是在量詞后面加個(gè)?從字符串的前面開始匹配,最小長(zhǎng)度的匹配

PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.VeVB.COm/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.VeVB.COm/regex/create_reg

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript替換操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 邵阳市| 凤山县| 拜泉县| 布尔津县| 万山特区| 津南区| 聊城市| 油尖旺区| 治县。| 天津市| 邵武市| 平阴县| 阳西县| 新干县| 苍溪县| 叙永县| 福泉市| 海阳市| 甘洛县| 体育| 罗城| 凤山县| 贡山| 禹州市| 贡嘎县| 栖霞市| 华亭县| 安远县| 贵阳市| 湘潭县| 吉安县| 石屏县| 康马县| 韶关市| 镇沅| 瓮安县| 安福县| 大同县| 平塘县| 贵溪市| 平和县|