IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
3. 量詞
量詞也稱重復(fù)。掌握{(diào)m,n}的準(zhǔn)確含義后,只需要記住一些簡寫形式。
3.1 簡寫形式
{m,} 表示至少出現(xiàn)m次。
{m} 等價于{m,m},表示出現(xiàn)m次。
? 等價于{0,1},表示出現(xiàn)或者不出現(xiàn)。記憶方式:問號的意思表示,有嗎?
+ 等價于{1,},表示出現(xiàn)至少一次。記憶方式:加號是追加的意思,得先有一個,然后才考慮追加。
* 等價于{0,},表示出現(xiàn)任意次,有可能不出現(xiàn)。記憶方式:看看天上的星星,可能一顆沒有,可能零散有幾顆,可能數(shù)也數(shù)不過來。
3.2 貪婪匹配和惰性匹配
看如下的例子
- var regex = /\d{2,5}/g;
- var string = "123 1234 12345 123456";
- console.log( string.match(regex) );
- // => ["123", "1234", "12345", "12345"]
其中正則/\d{2,5}/,表示數(shù)字連續(xù)出現(xiàn)2到5次。會匹配2位、3位、4位、5位連續(xù)數(shù)字。
但是其是貪婪的,它會盡可能多的匹配。你能給我6個,我就要5個。你能給我3個,我就3要個。反正只要在能力范圍內(nèi),越多越好。
我們知道有時貪婪不是一件好事(請看文章最后一個例子)。而惰性匹配,就是盡可能少的匹配:
- var regex = /\d{2,5}?/g;
- var string = "123 1234 12345 123456";
- console.log( string.match(regex) );
- // => ["12", "12", "34", "12", "34", "12", "34", "56"]
其中/\d{2,5}?/表示,雖然2到5次都行,當(dāng)2個就夠的時候,就不在往下嘗試了。
通過在量詞后面加個問號就能實現(xiàn)惰性匹配,因此所有惰性匹配情形如下:
- {m,n}?
- {m,}?
- ??
- +?
- *?
對惰性匹配的記憶方式是:量詞后面加個問號,問一問你知足了嗎,你很貪婪嗎?
4. 多選分支
一個模式可以實現(xiàn)橫向和縱向模糊匹配。而多選分支可以支持多個子模式任選其一。
具體形式如下:(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。
例如要匹配”good”和”nice”可以使用/good|nice/。測試如下:
- var regex = /good|nice/g;
- var string = "good idea, nice try.";
- console.log( string.match(regex) );
- // => ["good", "nice"]
但有個事實我們應(yīng)該注意,比如我用/good|goodbye/,去匹配”goodbye”字符串時,結(jié)果是”good”:
- var regex = /good|goodbye/g;
- var string = "goodbye";
- console.log( string.match(regex) );
- // => ["good"]
而把正則改成/goodbye|good/,結(jié)果是:
- var regex = /goodbye|good/g;
- var string = "goodbye";
- console.log( string.match(regex) );
- // => ["goodbye"]
也就是說,分支結(jié)構(gòu)也是惰性的,即當(dāng)前面的匹配上了,后面的就不再嘗試了。
>>本文地址:http://uj2y2uok.com/zhuanye/2020/52598.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?