正則表達(dá)式應(yīng)用總結(jié)

正則表達(dá)式:由普通字符(例如字符 a 到 z)以及特殊字符(稱為"元字符")組成的文字模式冗澈。模式描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板跺株,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。
非打印字符:
\cx:匹配由x指明的控制字符。例如落塑, \cM 匹配一個(gè) Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一罐韩。否則憾赁,將 c 視為一個(gè)原義的 'c' 字符。
\f:匹配一個(gè)換頁符散吵。
\n:匹配一個(gè)換行符龙考。
\r:匹配一個(gè)回車符蟆肆。
\t:匹配一個(gè)制表符。
\v:匹配一個(gè)垂直制表符晦款。
\s:匹配任何空白字符炎功,包括空格、制表符柬赐、換頁符等等亡问。
\S:匹配任何非空白字符。
\d:匹配所有數(shù)字字符肛宋。
\w: 匹配所有的字母州藕、數(shù)字、下劃線以外的字符酝陈。
\b:匹配非單詞邊界床玻,即左右兩邊都是 "\w" 范圍或者左右兩邊都不是 "\w" 范圍時(shí)的字符縫隙
.:小數(shù)點(diǎn)可以匹配除了換行符(\n)以外的任意一個(gè)字符

注:在表達(dá)式 "\s","\d"沉帮,"\w"锈死,"\b" 表示特殊意義的同時(shí),對(duì)應(yīng)的大寫字母表示相反的意義

特殊字符
所謂特殊字符穆壕,就是一些有特殊含義的字符待牵。
許多元字符要求在試圖匹配它們時(shí)特別對(duì)待。若要匹配這些特殊字符喇勋,必須首先使字符"轉(zhuǎn)義"缨该,即,將反斜杠字符\ 放在它們前面川背。下表列出了正則表達(dá)式中的特殊字符:
$: 匹配輸入字符串的結(jié)尾位置贰拿。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'熄云。要匹配 $ 字符本身膨更,請(qǐng)使用 $。
( ):標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置缴允。子表達(dá)式可以獲取供以后使用荚守。要匹配這些字符,請(qǐng)使用 ( 和 )练般。
+:匹配前面的子表達(dá)式一次或多次矗漾。要匹配 + 字符,請(qǐng)使用 \+踢俄。
*:匹配前面的子表達(dá)式零次或多次。要匹配\ * 字符晴及,請(qǐng)使用 \*都办。
.:匹配除換行符 \n 之外的任何單字符。要匹配 . ,請(qǐng)使用 \. 琳钉。
[:標(biāo)記一個(gè)中括號(hào)表達(dá)式的開始势木。要匹配 [,請(qǐng)使用 \[歌懒。
?: 匹配前面的子表達(dá)式零次或一次啦桌,或指明一個(gè)非貪婪限定符。要匹配 ? 字符及皂,請(qǐng)使用 \?甫男。
\:將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符验烧、或向后引用板驳、或八進(jìn)制轉(zhuǎn)義符。例如碍拆, 'n' 匹配字符 'n'若治。'\n' 匹配換行符。序列 '\' 匹配 ""感混,而 '(' 則匹配 "("端幼。
^:匹配輸入字符串的開始位置,除非在方括號(hào)表達(dá)式中使用弧满,此時(shí)它表示不接受該字符集合婆跑。要匹配 ^ 字符本身,請(qǐng)使用 ^谱秽。
{:標(biāo)記限定符表達(dá)式的開始洽蛀。要匹配 {,請(qǐng)使用 \{疟赊。
|: 指明兩項(xiàng)之間的一個(gè)選擇郊供。要匹配 |,請(qǐng)使用 \|近哟。

注:正則表達(dá)式中的特殊符號(hào)驮审,如果被包含于中括號(hào)中,則失去特殊意義吉执,但 \ [ ] : ^ - 除外疯淫。

標(biāo)準(zhǔn)字符集合,除小數(shù)點(diǎn)(.)外戳玫,如果被包含于中括號(hào)中熙掺,自定義字符集合將包含該集合。
比如:[\d.-+]咕宿,將可以匹配數(shù)字币绩,小數(shù)點(diǎn)和 + - 符號(hào)蜡秽。(小數(shù)點(diǎn)和 + 號(hào)失去特殊意義)

用減號(hào)相連的 2 個(gè)普通字符,自定義字符集合將包含該范圍缆镣。
比如:[\dA-Fa-f]芽突,將可以匹配 0 - 9, A - F, a - f。

限定符
限定符用來指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配董瞻。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種寞蚌。
: 匹配前面的子表達(dá)式零次或多次。例如钠糊,zo 能匹配 "z" 以及 "zoo"挟秤。* 等價(jià)于{0,}。
+:匹配前面的子表達(dá)式一次或多次眠蚂。例如煞聪,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"逝慧。+ 等價(jià)于 {1,}昔脯。
?:匹配前面的子表達(dá)式零次或一次笛臣。例如云稚,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 沈堡、 "doxy" 中的 "do" 静陈。? 等價(jià)于 {0,1}。
{n}:n 是一個(gè)非負(fù)整數(shù)诞丽。匹配確定的 n 次鲸拥。例如,'o{2}' 不能匹配 "Bob" 中的 'o'僧免,但是能匹配 "food" 中的兩個(gè) o刑赶。
{n,}:n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次懂衩。例如撞叨,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o浊洞。'o{1,}' 等價(jià)于 'o+'牵敷。'o{0,}' 則等價(jià)于 'o*'。
{n,m}: m 和 n 均為非負(fù)整數(shù)法希,其中n <= m枷餐。最少匹配 n 次且最多匹配 m 次。例如苫亦,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o毛肋。'o{0,1}' 等價(jià)于 'o?'奕锌。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。

轉(zhuǎn)義字符 \Q...\E
使用 \Q 開始村生,\E 結(jié)束,可使中間的標(biāo)點(diǎn)符號(hào)失去特殊意義饼丘,將中間的字符作為普通字符趁桃。
列:\Q(a+b)3\E 可匹配文本 "(a+b)3"。
使用 \U 開始肄鸽,\E 結(jié)束卫病,除了具有 \Q...\E 相同的功能外,還將中間的小寫字母轉(zhuǎn)換成大寫典徘。在大小寫敏感模式下蟀苛,只能與大寫文本匹配。

使用 \L 開始逮诲,\E 結(jié)束帜平,除了具有 \Q...\E 相同的功能外,還將中間的大寫字母轉(zhuǎn)換成小寫梅鹦。在大小寫敏感模式下裆甩,只能與小寫文本匹配。

正則式與字符串函數(shù)的區(qū)別:對(duì)于同樣的功能齐唆,正則表達(dá)式函數(shù)運(yùn)行要低于字符串函數(shù)嗤栓,所以如果應(yīng)用程序夠簡(jiǎn)單,那么就用字符串表達(dá)式箍邮,但是對(duì)于可以通過單個(gè)正則式執(zhí)行的任務(wù)茉帅,如果需要使用多個(gè)字符串函數(shù),ze首選正則式
補(bǔ)充

PHP中正則函數(shù)使用區(qū)別:
ereg()函數(shù) 有區(qū)分大小寫的功能锭弊,而eregi()函數(shù)與大小寫無關(guān)堪澎;preg_match 相比ereg更加規(guī)范,執(zhí)行效率越高廷蓉;preg_match與preg_match_all區(qū)別是preg_match只匹配一次全封,而preg_match_all全部匹配,直到字符串結(jié)束桃犬。

javascript中使用:
RegExp對(duì)象的屬性分為靜態(tài)屬性和實(shí)例屬性刹悴。
一 靜態(tài)屬性
RegExp對(duì)象的靜態(tài)屬性包含:input、multiline攒暇、lastMatch土匀、lastParen、leftContext形用、rightContext以及從$1到$9就轧。input和multiline屬性能被預(yù)設(shè)证杭。
1 index屬性:是當(dāng)前表達(dá)式模式首次匹配內(nèi)容的開始位置,從0開始計(jì)數(shù)妒御。其初始值為1解愤,每次成功匹配時(shí),index屬性都會(huì)隨之改變乎莉。
2 input屬性送讲。返回當(dāng)前所作用的字符串,可以簡(jiǎn)寫為$_惋啃,初始值為空字符串""哼鬓。
3 lastIndex屬性:是當(dāng)前表達(dá)式模式首次匹配內(nèi)容中最后一個(gè)字符的下一個(gè)位置,從0開始計(jì)數(shù)边灭,常被作為繼續(xù)搜索時(shí)的起始位置异希,初始值為1,表示從起始位置開始搜索绒瘦,每次成功匹配時(shí)称簿,lastIndex屬性值都會(huì)隨之改變。
4 lastMatch屬性:是當(dāng)前表達(dá)式模式的最后一個(gè)匹配字符串惰帽,可以簡(jiǎn)寫為$&予跌。其初始值為空字符串""。在每次成功匹配時(shí)善茎,lastMatch屬性值都會(huì)隨之改變券册。
5 lastParen屬性:如果表達(dá)式模式中有括起來的子匹配,是當(dāng)前表達(dá)式模式中最后的子匹配所匹配到的子字符串垂涯,可以簡(jiǎn)寫為$+烁焙。其初始值為空字符串""。每次成功匹配時(shí)耕赘,lastParen屬性值都會(huì)隨之改變骄蝇。
6 leftContext屬性:是當(dāng)前表達(dá)式模式最后一個(gè)匹配字符串左邊的所有內(nèi)容,可以簡(jiǎn)寫為$`(其中“'”為鍵盤上“Esc”下邊的反單引號(hào))操骡。初始值為空字符串""九火。每次成功匹配時(shí),其屬性值都會(huì)隨之改變册招。
7 rightContext屬性:是當(dāng)前表達(dá)式模式最后一個(gè)匹配字符串右邊的所有內(nèi)容岔激,可以簡(jiǎn)寫為$’。初始值為空字符串""是掰。每次成功匹配時(shí)虑鼎,其屬性值都會(huì)隨之改變。
8 $1…$9屬性:這些屬性是只讀的。如果表達(dá)式模式中有括起來的子匹配炫彩,$1…$9屬性值分別是第1個(gè)到第9個(gè)子匹配所捕獲到的內(nèi)容匾七。如果有超過9個(gè)以上的子匹配,$1…$9屬性分別對(duì)應(yīng)最后的9個(gè)子匹配江兢。在一個(gè)表達(dá)式模式中昨忆,可以指定任意多個(gè)帶括號(hào)的子匹配,但RegExp對(duì)象只能存儲(chǔ)最后的9個(gè)子匹配的結(jié)果杉允。在RegExp實(shí)例對(duì)象的一些方法所返回的結(jié)果數(shù)組中扔嵌,可以獲得所有圓括號(hào)內(nèi)的子匹配結(jié)果。

二 實(shí)例屬性
RegExp的實(shí)例有幾個(gè)只讀的屬性夺颤,包括global表示是否為全局匹配;igoreCase表示是否忽略大小寫胁勺;multiline表示是否為多行匹配世澜;source是正則式的源文本。如/[ab]/g的源文本就是[ab]署穗。
1 global屬性:返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的global標(biāo)志(g)的狀態(tài)寥裂。如果創(chuàng)建RegExp對(duì)象實(shí)例時(shí)設(shè)置了g標(biāo)志,該屬性返回true案疲,否則返回false封恰,默認(rèn)值為false。
2 ignoreCase屬性:返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的ignoreCase標(biāo)志(i)的狀態(tài)褐啡。如果創(chuàng)建RegExp對(duì)象實(shí)例時(shí)設(shè)置了i標(biāo)志诺舔,該屬性返回true,否則返回false备畦,默認(rèn)值為false低飒。
3 multiLine屬性:返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的multiLine標(biāo)志(m)的狀態(tài)。如果創(chuàng)建RegExp對(duì)象實(shí)例時(shí)設(shè)置了m標(biāo)志懂盐,該屬性返回true褥赊,否則返回false,默認(rèn)值為false莉恼。
4 source屬性:返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的表達(dá)式文本字符串拌喉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市俐银,隨后出現(xiàn)的幾起案子尿背,更是在濱河造成了極大的恐慌,老刑警劉巖捶惜,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件残家,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡售躁,警方通過查閱死者的電腦和手機(jī)坞淮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門茴晋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人回窘,你說我怎么就攤上這事诺擅。” “怎么了啡直?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵烁涌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我酒觅,道長(zhǎng)撮执,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任舷丹,我火速辦了婚禮抒钱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颜凯。我一直安慰自己谋币,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布症概。 她就那樣靜靜地躺著蕾额,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彼城。 梳的紋絲不亂的頭發(fā)上诅蝶,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音募壕,去河邊找鬼秤涩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛司抱,可吹牛的內(nèi)容都是我干的筐眷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼习柠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼匀谣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起资溃,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤武翎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后溶锭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宝恶,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垫毙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霹疫。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖综芥,靈堂內(nèi)的尸體忽然破棺而出丽蝎,到底是詐尸還是另有隱情,我是刑警寧澤膀藐,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布屠阻,位于F島的核電站,受9級(jí)特大地震影響额各,放射性物質(zhì)發(fā)生泄漏国觉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一虾啦、第九天 我趴在偏房一處隱蔽的房頂上張望麻诀。 院中可真熱鬧,春花似錦缸逃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至筷凤,卻和暖如春昭殉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藐守。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工挪丢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卢厂。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓乾蓬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親慎恒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子任内,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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