正規表示式的修飾符及建構函式

2021-10-24 08:47:02 字數 2767 閱讀 2611

2. 建構函式`regexp(正規表示式,修飾符)`

正規表示式還可以跟上修飾符(/exp/修飾符)限制正規表示式的行為。

介紹三個常用的修飾符:

修飾符

作用 i

忽略大小寫

g 全域性匹配

m 多行匹配

修飾符i表示匹配時忽略大小寫,例如:

reg =

/abde/i

;console.

log(reg.

test

(" abde "))

;

修飾符g表示全域性匹配。在沒有修飾符g的情況下,只會進行第一次匹配,也就是說,只要找到符合正規表示式的子串,就停止匹配。

舉例:

reg =

/a/;

str =

"aaabbaa"

;str = str.

replace

(reg,

"b")

;console.

log(str)

;

在上面的例子中,想要將aaabbaa中的a都替換為b,但是最後的結果式baabbaa,這是因為正規表示式/a/只會進行第一次匹配,在第一次匹配之後,就停止匹配。

如果想要匹配完整的字串,需要用到修飾符g

將上面**中的正規表示式修改為:

修飾符m表示多行匹配。

例如,有以下字串aaabbaa\naaabbaa。如果想要通過replace()方法,將字串改為baabbaa\nbaabbaa,也就是說將這個字串(有兩行)的每一行開頭的a修改為b

舉例:

reg =

結果和預想的不一樣,接下來分析原因在匹配時,如果正規表示式沒有被m修飾,在匹配字串時,字串只有乙個開頭^和結束$;如果正規表示式被修飾符m修飾,表示每一行的開頭都可以和^匹配,每一行的結尾都可以被$匹配。上面的例子中,由於不是全域性匹配,則第一次匹配成功後就結束

也就是說,上面的例子仍然需要全域性匹配,正規表示式應該是/^a/mg(修飾符可以組合使用,沒有順序限制)

為了加深對修飾符m的理解,僅使用g修飾正規表示式:

reg =

/^a/g

;str =

"aaabbaa\naaabbaa"

結果也僅僅是修改了第乙個a,因為沒有使用m,在匹配時,認為只有乙個開頭和乙個結尾。如果加上m,每一行都有自己的開頭(可以和^匹配)和自己的結尾除了使用「字面量」的方式建立正規表示式物件,還可以使用建構函式建立正規表示式。

先來回顧一下通過字面量建立正規表示式的方式:

var reg = /表示式/修飾符

使用建構函式建立:

var reg = new regexp(表示式, 修飾符)

舉例:

var reg1 =

/^abcd$/ig

;var reg2 =

newregexp

("^abcd$"

,"ig");

console.

log(

"reg1 = "

+ reg1)

;console.

log(

"reg2 = "

+ reg2)

;

使用字面量建立時,表示式的內容不用使用"",然而,使用建構函式時,第乙個引數傳入的是乙個字串,字串的內容是表示式,因為是字串,所以要使用雙引號使用字面量和使用建構函式,都可以建立正規表示式物件。採用字面量建立的正規表示式是「死」的,而使用建構函式,表示式的內容(字串)可以使用變數代替,因此使用建構函式建立更加靈活。

正規表示式修飾符

修飾符 在正規表示式裡面的修飾符可以改變正則的很多特性,使得正規表示式更加適合你的需要 注意 修飾符對於大小寫是敏感的,這意味著 e 並不等於 e 正規表示式裡面的修飾符如下 i 如果在修飾符中加上 i 則正則將會取消大小寫敏感性,即 a 和 a 是一樣的。m 預設的正則開始 和結束 只是對於正則字...

正規表示式 修飾符

正規表示式 修飾符 標記 標記也稱為修飾符,正規表示式的標記用於指定額外的匹配策略。標記不寫在正規表示式裡,標記位於表示式之外,格式如下 pattern flags i ignore 不區分大小寫 將匹配設定為不區分大小寫,a a沒有區別 g global 全域性匹配 查詢所有的匹配項 m mult...

正規表示式修飾符

正規表示式中常用的模式修正符有i g m s u x a d e 等。它們之間可以組合搭配使用。i不區分 ignore 大小寫 例如 abc i 可以匹配 abc abc abcg全域性 global 匹配例如 var str aaaaaaaa var reg1 a str.match reg1 結...