·
字面量
var
reg=/\d+/g;
console.log(
reg.test("789456"));//true
·
構(gòu)造函數(shù)
var reg2=
new RegExp("\\d+","g");console.log(reg2.test("1234444456"));//trueconsole.log(reg2.test("asdsa"));//false
修飾符
·
i:
表示不區(qū)分大小寫(case-insensitive
)模式,即在確定匹配項(xiàng)時(shí)忽略模式與字符串的大小寫;
·
m:
表示多行(multiline
)模式,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)查找下一行中是否存在與模 式匹配的項(xiàng)。
·
g:
表示全局(global
)模式,即模式將被應(yīng)用于所有字符串,而非在發(fā)現(xiàn)第一個(gè)匹配項(xiàng)時(shí)立即 停止;
元字符
·
單個(gè)字符數(shù)字
· .
匹配除換行符以外的任意字符
· [a-zA-Z0-p]
與
[^a-zA-Z0-p]
匹配方括號(hào)中的任意字符,前面代
^
是匹配不在方括號(hào)中的任意字符;
· \d
與
\D
匹配數(shù)字和匹配非數(shù)字;
· \w
與
\W
匹配字符和匹配非字母
·
空白字符
· \O
匹配
null
字符
· \b
匹配空格字符
· \f
匹配換頁符
· \n
匹配換行符
· \r
匹配回車符
· \s
和
\S
匹配空白字符,空格、制表符或換行符。大寫的
S
是匹配非空字符
· \t
匹配制表符
·
定位符
· ^
行首匹配
· $
行尾匹配
· \A
只匹配字符串的開始處
· \b \B
匹配單詞便捷,詞在
[]
內(nèi)無效,匹配非單詞邊界
· G
匹配當(dāng)前搜索的開始位置
· \Z \z
匹配字符串結(jié)束處或行尾,只匹配字符串結(jié)束處
·
限定符
· x?
匹配
0
個(gè)或一個(gè)
x
· x*
匹配
0
個(gè)或者任意多個(gè)
x
· x+
匹配一個(gè)或者多個(gè)
· x{m,n}
匹配
m-n
個(gè)
x
;
·
分組
· (?:x)
匹配
x
但不記錄匹配結(jié)果(匹配不捕獲)
· x(?=y)
當(dāng)
x
后面接
y
時(shí)匹配
x
· x(?!y)
當(dāng)
x
后不是
y
時(shí)匹配
x
·
引用
· \1…\9 $1…$9
返回就割在模式匹配期間找到的,最近保存的部分
·
或模式
· x|y|z
匹配
x
或者
y
或者
z
屬性
實(shí)例屬性
RegExp
的每個(gè)實(shí)例都具有下列屬性,通過這些屬性可以取得有關(guān)模式的各種信息。
· global
:布爾值,檢測(cè)是走設(shè)置
g
標(biāo)記
· ignoreCase
:布爾值,檢測(cè)是否設(shè)置
i
標(biāo)記
· nultiline
: 布爾值,檢測(cè)是否設(shè)置了
m
標(biāo)記
· lastIndex
: 整數(shù),表示開始搜索下一個(gè)匹配項(xiàng)的字符位置,從
0
算起。
· source
返回正則表達(dá)式的字符串表示
,
按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回。
通過這些屬性可以獲知一個(gè)正則表達(dá)式的各方面信息,但卻沒有多大用處,因?yàn)檫@些信息全都包含在模式聲明中。
var pattern1 = /\[bc\]at/i;console.log(pattern1.global); //falseconsole.log(pattern1.ignoreCase); //trueconsole.log(pattern1.multiline); //falseconsole.log(pattern1.lastIndex); //0console.log(pattern1.source); //"\[bc\]at"
var pattern2 =
new RegExp("\\[bc\\]at", "i");console.log(pattern2.global); //falseconsole.log(pattern2.ignoreCase); //trueconsole.log(pattern2.multiline); //falseconsole.log(pattern2.lastIndex); //0console.log(pattern2.source); //"\[bc\]at"
盡管第一個(gè)模式使用的是字面量,第二個(gè)模式使用了 RegExp
構(gòu)造函數(shù),但它們的
source
屬性是相同的??梢姡?nbsp;
source
屬性保存的是規(guī)范形式的字符串,即字面量形式所用的字符串。
構(gòu)造函數(shù)屬性
· $_ input
返回最近一次匹配的字符串
· $& lastMatch
返回最近一次的匹配項(xiàng)
· $+ lastParen
返回最近一次匹配的捕獲組
· $` leftContext
返回被查找的字符串中從字符串開始位置到最后匹配之前的位置之間的字符
· $’ rightContext
返回被搜索的字符串中從最后一個(gè)匹配位置開始到字符串結(jié)尾之間的字符
· $* multiline
檢測(cè)表達(dá)式是否采用多行匹配
m
方法
實(shí)例方法
test()
方法在字符串中檢測(cè)模式匹配,返回
true
或
false
var re = null, i;
for (i = 0; i < 10; i++) {
re = /cat/g;
console.log(re.test("catastrophe")); //true
}
for (i = 0; i < 10; i++) {
re =
new RegExp("cat", "g");
console.log(re.test("catastrophe")); //true
}
RegExp
對(duì)象的主要方法是
exec()
,該方法是專門為捕獲組而設(shè)計(jì)的。
exec()
接受一個(gè)參數(shù),即 要應(yīng)用模式的字符串,然后返回包含第一個(gè)匹配項(xiàng)信息的數(shù)組;或者在沒有匹配項(xiàng)的情況下返回
null
。 返回的數(shù)組雖然是
Array
的實(shí)例,但包含兩個(gè)額外的屬性:
index
和
input
。其中,
index
表示匹配 項(xiàng)在字符串中的位置,而
input
表示應(yīng)用正則表達(dá)式的字符串。在數(shù)組中,第一項(xiàng)是與整個(gè)模式匹配 的字符串,其他項(xiàng)是與模式中的捕獲組匹配的字符串(如果模式中沒有捕獲組,則該數(shù)組只包含一項(xiàng))。
var text = "cat, bat, sat, fat";
var pattern1 = /.at/;
var matches = pattern1.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0
matches = pattern1.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0
var pattern2 = /.at/g;
var matches = pattern2.exec(text);console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern2.lastIndex); //3
matches = pattern2.exec(text);console.log(matches.index); //5console.log(matches[0]); //batconsole.log(pattern2.lastIndex); //8
第一個(gè)模式 pattern1
不是全局模式,因此每次調(diào)用
exec()
返回的都是第一個(gè)匹配項(xiàng)(
“cat”
)。而第二個(gè)模式
pattern2
是全局模式,因此每次調(diào)用
exec()
都會(huì)返回字符串中的下一個(gè)匹配項(xiàng),直至搜索到字符串末尾為止。此外,還應(yīng)該注意模式的
lastIndex
屬性的變化情況。在全局匹配模式下,
lastIndex
的值在每次調(diào)用
exec()
后都會(huì)增加,而在非全局模式下則始終保持不變。
字符串方法
· match
找到一個(gè)或者多個(gè)正則表達(dá)式的匹配
· replace
替換與正則表達(dá)式匹配的子串
· search
檢索與正則表達(dá)式匹配的值
· split
把字符串分割為字符串?dāng)?shù)組
來源: liuguoquan727