摘要:簡介正則表達(dá)式,又稱正規(guī)表示法正規(guī)表達(dá)式規(guī)則表達(dá)式常規(guī)表示法英語,在代碼中常簡寫為或,計(jì)算機(jī)科學(xué)的一個概念。返回布爾值,該值指示在正則表達(dá)式中使用的標(biāo)志的狀態(tài)。包含正則表達(dá)式模式和適用標(biāo)志的對象的實(shí)例。
簡介
正則表達(dá)式,又稱正規(guī)表示法、正規(guī)表達(dá)式、規(guī)則表達(dá)式、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計(jì)算機(jī)科學(xué)的一個概念。正則表達(dá)式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些符合某個模式的文本。
說人話就是:對字符串執(zhí)行模式匹配的強(qiáng)大工具。
Javascript中的正則表達(dá)式相較于其他語言來說實(shí)現(xiàn)的并不完整,但仍然是十分強(qiáng)大的,能夠幫助我們完成絕大多數(shù)模式匹配任務(wù)。
定義在javascript中,正則表達(dá)式的定義和數(shù)組以及對象的定義一樣有倆種方式。 一種是直接量,另一種是構(gòu)造函數(shù)。
直接量Javascript可以使用類似Perl的語法定義一個正則表達(dá)式
var r = /pattern/flags;
其中pattern是任何簡單或復(fù)雜的正則表達(dá)式,flags是用以表達(dá)正則表達(dá)式行為的一個或者多個標(biāo)識。
flags
g 表示全局(global)模式,即模式將被應(yīng)用于所有字符串
i 表示不區(qū)分大小寫
m 多行模式
舉個栗子:
var reg1 = /ip/g; // 匹配字符串中所有"ip"的實(shí)例 var reg2 = /com/gi; // 匹配以"com"結(jié)尾的三個字符的組合,不區(qū)分大小寫使用構(gòu)造函數(shù)
Javascript中正則表達(dá)式的構(gòu)造函數(shù)為RegExp,即Regular Expression的縮寫,它接收兩個參數(shù),第一個為要匹配的字符串模式,另一個是可選的標(biāo)識位。
var reg = new RegExp("nice", "g"); // 匹配字符串中所有的"nice"
注意:第一個參數(shù)是一個字符串nice,而不是正則表達(dá)式的直接量/nice/。
所有元字符都需要進(jìn)行雙重轉(zhuǎn)義
所有元字符都需要進(jìn)行雙重轉(zhuǎn)義
所有元字符都需要進(jìn)行雙重轉(zhuǎn)義
使用構(gòu)造函數(shù)定義正則表達(dá)式,由于構(gòu)造函數(shù)的第一個參數(shù)必須是一個字符串,在匹配元字符時,需要雙重轉(zhuǎn)義。
// 匹配{user} var reg1 = new RegExp("{user}", "g"); // wrong // 由于在字符串中需要轉(zhuǎn)義為,所以,如果要匹配{user},正則表達(dá)式需要寫為 var reg1 = new RegExp("{user}", "g");基本概念總結(jié) 元字符
在正則表達(dá)式的模式中,有一些字符是有特殊含義的,被稱為元字符,如果要匹配元字符,則必須對其進(jìn)行轉(zhuǎn)義,如果用構(gòu)造函數(shù),則要進(jìn)行雙重轉(zhuǎn)義。
這些元字符分別是(一共14個):
{ ( [ ^ $ | ? * + . ] ) }直接量字符
| 字符 | 匹配 |
| ------------- |:-------------:|
|字母數(shù)字字符|自身|
|