1.字面量形式的RegExp
var expression= / pattern / flag;
以上就是正則表達(dá)式的形式;其中 pattern(模式)部分可以是簡單的、復(fù)雜的正則表達(dá)式,正則表達(dá)式可以包含 字符類、限定符(啥?)、分組(又是啥?)、向前查找以及反向引用。每一個(gè)正則可以帶一個(gè)會(huì)多個(gè) flag(標(biāo)志),這個(gè)標(biāo)志用來表明這個(gè)正則的行為(行為:是否全局查找,是否忽略大小寫,是否多行查找)。目前正則支持3個(gè)標(biāo)志:
- g 表示全局(global)模式,使用 g 時(shí),代表模式 pattern 被應(yīng)用在所有的字符串,而非在發(fā)現(xiàn)字符串中第一個(gè)匹配項(xiàng)時(shí)就停止;
- i 表示不區(qū)分大小寫(case-inseneitive)模式,即在匹配時(shí)忽略模式與字符串的大小寫;
- m 表示多行(multiline)模式,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)查找下一行中是否存在匹配項(xiàng)
因此,正則表達(dá)式就是一個(gè)模式與上述三個(gè)標(biāo)志的組合體,不同組合產(chǎn)生不一樣的結(jié)果。
var pattern1=/ at / g ;
// 表示匹配字符串中所有的 “ at ”
var pattern2=/ [bc]at /i;
// 表示匹配第一個(gè)出現(xiàn)的“ bat ”或者“ cat ”,不區(qū)分大小寫
var pattern3=/ .at /gi ;
// 匹配所有以at結(jié)尾的3個(gè)字符的組合,不區(qū)分大小寫
注意:正則表達(dá)式與其他語言類似。模式中使用的元字符都必須轉(zhuǎn)義。元字符包括:
( [ { \ ^ * | $ ? + . } ] ),這些元字符都有一種及以上的特殊用途
// 表示匹配第一個(gè)出現(xiàn)的 [bc]at ”,不區(qū)分大小寫
var pattern4=/ \[bc\]at / i ;
// 匹配所有的‘.at’
var pattern5=/ \.at /g ;
根據(jù)以上的例子可知,在匹配的字符串中有元字符,需要在其前面添加轉(zhuǎn)義字符 \ 來進(jìn)行轉(zhuǎn)義,否則會(huì)將其當(dāng)做有特殊意義的字符
2.構(gòu)造函數(shù)形式的RegExp
var pattern_1 = new RegExp(“pattern”, "flag");
前面的例子都是使用字面量形式來定義正則表達(dá)式,另一種創(chuàng)建正則表達(dá)式是使用構(gòu)造函數(shù) RegExp。他接收兩個(gè)參數(shù),第一個(gè)參數(shù)是要匹配的字符串模式,另一個(gè)是標(biāo)志字符串。
var pattern2=/ [bc]at /i;
var pattern_2=new RegExp(“ [bc]at ”, " i ") ;
注意:傳遞給 RegExp 構(gòu)造函數(shù)的參數(shù)都是字符串,所以不能把字面量正則傳遞給構(gòu)造函數(shù),并且在某些情況下要對(duì)字符進(jìn)行雙重轉(zhuǎn)義。所有的元字符必須雙重轉(zhuǎn)義,已經(jīng)轉(zhuǎn)義過的字符也是。例如 \n(此處的 \ 在字符串中通常會(huì)被轉(zhuǎn)義為 \\ ,而在正則表達(dá)式字符串中就會(huì)變成\\\\);

3.RegExp的實(shí)例屬性
RegExp的每個(gè)實(shí)例都有以下屬性,通過這些屬性可以取得有關(guān)模式的各種信息。
- global 布爾值,表示是否設(shè)置了 g 標(biāo)志
- ignoreCase 布爾值,表示是否設(shè)置了 i 標(biāo)志
- mutliline 布爾值,表示是否設(shè)置了 m 標(biāo)志
- laseIndex 整數(shù),表示搜索下一次匹配項(xiàng)的開始位置
-
source 正則表達(dá)式的字符串表示,按照字面量形式返回
image.png
4.RegExp的實(shí)例方法
4.1 exec() 方法,專為捕獲組而設(shè)計(jì)的。接收一個(gè)參數(shù),即要應(yīng)用模式的字符串,然后返回包含匹配信息的數(shù)組,沒有匹配的時(shí)候返回null;返回的雖然是數(shù)array的實(shí)例,但是包含兩個(gè)額外的屬性:index和input。其中index表示匹配項(xiàng)在字符串中的位置,而input表示應(yīng)用正則表達(dá)式的字符串,在數(shù)組中,第一項(xiàng)是與整個(gè)模式匹配的字符串,其他項(xiàng)是與模式中的捕獲組匹配的項(xiàng)
var test="mom and dad and baby";
var pattern=/mom (and dad (and baby)?)?/gi;
var mat=pattern.exec(test);
console.log(mat);

4.2 test() 方法,接收一個(gè)字符串參數(shù),當(dāng)該參數(shù)與模式匹配則返回true,否則返回false。
5.RegExp構(gòu)造函數(shù)屬性
這些屬性適用于作用域中的所有正則表達(dá)式,并且基于所執(zhí)行的最近一次的正則操作而變化,這些屬性可以通過兩種方式訪問

使用這些屬性可以從exec()與test()方法執(zhí)行操作中提取出更具體的信息。

