正則表達(dá)式

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ì)變成\\\\);

字面量形式與構(gòu)造函數(shù)形式對(duì)比.png

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è)額外的屬性:indexinput。其中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);  
打印結(jié)果.png

4.2 test() 方法,接收一個(gè)字符串參數(shù),當(dāng)該參數(shù)與模式匹配則返回true,否則返回false。

5.RegExp構(gòu)造函數(shù)屬性
這些屬性適用于作用域中的所有正則表達(dá)式,并且基于所執(zhí)行的最近一次的正則操作而變化,這些屬性可以通過兩種方式訪問


兩種訪問屬性的方式.png

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


執(zhí)行方法操作后訪問屬性.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容