小結(jié) | 正則表達(dá)式模式匹配

正則表達(dá)式

是一個(gè)描述字符模式的對(duì)象。

JavaScript中的正則表達(dá)式用RegExp對(duì)象表示舟奠。
正則表達(dá)式的定義

正則表達(dá)式的創(chuàng)建:

  • 可以使用RegExp()構(gòu)造函數(shù)來(lái)創(chuàng)建RegExp對(duì)象.
  • 也可以通過(guò)一種特殊的直接量語(yǔ)法來(lái)創(chuàng)建。
    var pattern = /s$/ == var pattern = new RegExp("s$");
    //運(yùn)行這段代碼創(chuàng)建一個(gè)新的RegExp對(duì)象沼瘫,并將它賦值給變量pattern,這個(gè)特殊的RegExp對(duì)象用來(lái)匹配所有以字母“s”結(jié)尾的字符串湿故。
正則表達(dá)式的模式規(guī)則是由一個(gè)字符序列組成的膜蛔。包括所有字母和數(shù)字在內(nèi)坛猪,大多數(shù)的字符都是按照直接量?jī)H描述待匹配的字符的皂股。
1. 直接量字符

正則表達(dá)式中的所有字母和字符都是按照字面含義進(jìn)行匹配的。

正則表達(dá)式中的直接量字符.png
通行規(guī)則:
  • 如果想在正則表達(dá)式中使用這些字符的直接量進(jìn)行匹配躁锁,則必須使用前綴\卵史。
  • 對(duì)于想按照直接量進(jìn)行匹配的字母和數(shù)字盡量不要用反斜線對(duì)其轉(zhuǎn)義战转。
  • 要想在正則表達(dá)式中按照直接量匹配反斜線本身以躯,則必須使用反斜線對(duì)其轉(zhuǎn)義。"/\\/".
2. 字符類

將直接量字符單獨(dú)放進(jìn)方括號(hào)內(nèi)就組成了字符類忧设。

字符類.png
3. 重復(fù)

正則表達(dá)式的重復(fù)字符語(yǔ)法(盡可能多的匹配)

重復(fù).png
V吩巍!谨垃!對(duì)于"?"刘陶、"*",由于字符內(nèi)可能匹配0個(gè)字符匙隔,因此他們?cè)试S什么都不匹配。
4. 非貪婪的重復(fù)

非貪婪重復(fù)是匹配盡可能少的捍掺,語(yǔ)法為在待匹配字符后加“?”,如 ??乡小、+?饵史。

5. 選擇满钟、分組和引用
  • 字符"|"用于分隔供選擇的字符
    選擇項(xiàng)的嘗試匹配次序是從左到右胳喷,直到發(fā)現(xiàn)了匹配項(xiàng)。
    eg: /ab|cd|ef/可以匹配字符串"ab"吭露、"cd"、"ef"泥兰。
  • 圓括號(hào)有三種作用:
  1. 把單獨(dú)的項(xiàng)組合成子表達(dá)式弄屡。
  2. 在完整的模式中定義子模式鞋诗。
  3. 允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式。
  • 正則表達(dá)式不允許用雙引號(hào)括起的內(nèi)容中有單引號(hào)削彬。
  • 在正則表達(dá)式中不用創(chuàng)建帶數(shù)字編碼的引用,也可以對(duì)子表達(dá)式進(jìn)行分組壶笼,以 ("?:" 和 ")"分組。
6.指定匹配位置

正則表達(dá)式中的錨字符:
^ 匹配字符串的開(kāi)頭覆劈,在多行檢索中沛励,匹配一行的開(kāi)頭
$ 匹配字符串的結(jié)尾
\b 匹配一個(gè)單詞的邊界
\B 匹配非單詞的邊界
(?=p) 零寬正向先行斷言,要求接下來(lái)的字符都與p匹配侯勉,但不能包括匹配P的那些字符
(?|p) 零寬負(fù)向先行斷言,要求接下來(lái)的字符不與P匹配址貌。

7. 修飾符
  • 修飾符放在"/"符號(hào)之外。
  • 修飾符"i"用以說(shuō)明模式匹配是不區(qū)分大小的练对。
  • 修飾符"g"說(shuō)明模式匹配應(yīng)該是全局的。
  • 修飾符"m"在多行模式中執(zhí)行匹配螟凭,^匹配一行的開(kāi)頭和字符串的開(kāi)頭虚青,$匹配行的結(jié)束和字符串的結(jié)束螺男。

用于模式匹配的String方法

  • search()
    參數(shù)為一個(gè)正則表達(dá)式,返回第一個(gè)與之匹配的子串的起始位置(不支持全局檢索)下隧。
  • replace()
    其中第一個(gè)參數(shù)是一個(gè)正則表達(dá)式,第二個(gè)參數(shù)是要進(jìn)行替換的字符串何乎。
  • match()
    唯一參數(shù)就是一個(gè)正則表達(dá)式,返回的是一個(gè)由匹配結(jié)果組成的數(shù)組支救。
  • exec()
    返回一個(gè)數(shù)組,帶有index和input屬性各墨。

RegExp對(duì)象

RegExp()構(gòu)造函數(shù)帶有兩個(gè)字符串參數(shù),其中第二個(gè)參數(shù)是可選的欲主,第一個(gè)參數(shù)包含正則表達(dá)式的主題部分逝嚎。
var zipcode = new RegExp("\d{5}","g");

RegExp屬性

  • source屬性
    是一個(gè)只讀字符串,包含正則表達(dá)式的文本补君。
  • global屬性
    是一個(gè)只讀的布爾值,用以說(shuō)明這個(gè)正則表達(dá)式是否帶有修飾符g伟桅。
  • ignoreCase屬性
    也是一個(gè)只讀的布爾值,用以說(shuō)明這個(gè)正則表達(dá)式是否帶有修飾符i楣铁。
  • multiline也是一個(gè)只讀的布爾值更扁,用以說(shuō)明這個(gè)正則表達(dá)式是否帶有修飾符m。
  • lastIndex是一個(gè)可讀/寫(xiě)的整數(shù)浓镜,如果匹配模式帶有g(shù)修飾符,這個(gè)屬性存儲(chǔ)在整個(gè)字符串下膛薛,一次檢索的開(kāi)始位置。

RegExp方法

  • exec()方法
    對(duì)一個(gè)指定的字符串執(zhí)行一個(gè)正則表達(dá)式哄啄。
    即在一個(gè)字符串的執(zhí)行匹配檢索,如果沒(méi)有找到任何匹配就返回null椿访,但如果找到了一個(gè)匹配,它將返回一個(gè)數(shù)組成玫。
  • test()方法
    它的參數(shù)是一個(gè)字符串。
    用test()對(duì)某個(gè)字符串進(jìn)行檢索哭当,如果包含正則表達(dá)式的一個(gè)匹配結(jié)果則返回true。
    var pattern = /java/i;
    pattern.test("javascript"); //返回true
正則符號(hào)表.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陋葡,一起剝皮案震驚了整個(gè)濱河市彻采,隨后出現(xiàn)的幾起案子腐缤,更是在濱河造成了極大的恐慌肛响,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃浇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡虎囚,警方通過(guò)查閱死者的電腦和手機(jī)蔫磨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)堤如,“玉大人,你說(shuō)我怎么就攤上這事煤惩。” “怎么了魄揉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瓣俯。 經(jīng)常有香客問(wèn)我兵怯,道長(zhǎng)彩匕,這世上最難降的妖魔是什么媒区? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任掸犬,我火速辦了婚禮绪爸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奠货。我一直安慰自己,他們只是感情好递惋,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著睛廊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上没酣,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音绒净,去河邊找鬼。 笑死挂疆,一個(gè)胖子當(dāng)著我的面吹牛下翎,可吹牛的內(nèi)容都是我干的缤言。 我是一名探鬼主播视事,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跌穗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蚌吸,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤砌庄,失蹤者是張志新(化名)和其女友劉穎羹唠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肉迫,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喊衫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了族购。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寝杖,死狀恐怖担钮,靈堂內(nèi)的尸體忽然破棺而出陨囊,到底是詐尸還是另有隱情项贺,我是刑警寧澤觉啊,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布姿鸿,位于F島的核電站站削,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏许起。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一园细、第九天 我趴在偏房一處隱蔽的房頂上張望接校。 院中可真熱鬧珊肃,春花似錦馅笙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)皿淋。三九已至恬试,卻和暖如春疯暑,著一層夾襖步出監(jiān)牢的瞬間训柴,已是汗流浹背妇拯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留越锈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓稀拐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親德撬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容