定義:正則表達(dá)式是一種特殊的字符串模式,用于匹配一組字符串,就好比用模具做產(chǎn)品,而正則就是這個(gè)模具,定義一種規(guī)則去匹配符合規(guī)則的字符。
正則表達(dá)式 由一些普通字符和一些元字符組成。普通字符包括大小寫的字母和數(shù)字,而元字符則具有特殊的含義。
基礎(chǔ)語法"^([]{})([]{})([]{})$"
正則字符串= "開始([包含內(nèi)容]{長度})([包含內(nèi)容]{長度})([包含內(nèi)容]{長度})結(jié)束"
標(biāo)識(shí)主要包括:
1. i忽略大小寫匹配
2. m多行匹配,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)尋常下一行中是否與正則匹配的項(xiàng)
3. g全局匹配 模式應(yīng)用于所有字符串,而非在找到第一個(gè)匹配項(xiàng)時(shí)停止
字面量創(chuàng)建方式特殊含義的字符不需要轉(zhuǎn)義,實(shí)例創(chuàng)建方式需要轉(zhuǎn)義
var reg1 = new RegExp('\d');? //? ? /d/
var reg2 = new RegExp('\\d')? //? /\d/
var reg3 = /\d/;? ? ? ? ? ? ? //? /\d/
代表次數(shù)的量詞元字符
?等價(jià)于匹配長度{0,1}
*等價(jià)于匹配長度{0,}
+等價(jià)于匹配長度{1,}
{n,m}匹配長度n到m次
{n,} n到多次
{n} n次
元字符
\b :不會(huì)消耗任何字符只匹配一個(gè)位置,常用于匹配單詞邊界 如 我想從字符串中"This is Regex"匹配單獨(dú)的單詞"is"正則就要寫成"\bis\b"\b不會(huì)匹配is兩邊的字符,但它會(huì)識(shí)別is兩邊是否為單詞的邊界
\B匹配不是單詞開頭或結(jié)束的位置
\s:匹配空格,包括空格、制表符、換頁符等。
\S:匹配任意不是空白符的字符
\d等價(jià)于[0-9]
\D等價(jià)于[^0-9]
\w等價(jià)于[A-Za-z_0-9]
\W等價(jià)于[^A-Za-z_0-9]
\n換行符匹配。等效于\x0a和\cJ。
\r匹配一個(gè)回車符。等效于\x0d和\cM。
^開始
() 域段,分組
[]包含,默認(rèn)是一個(gè)字符長度
[^]不包含,默認(rèn)是一個(gè)字符長度
.任何單個(gè)字符(\.字符點(diǎn),除換行符外)
|或
\轉(zhuǎn)義
$結(jié)尾
[A-Z] 26個(gè)大寫字母
[a-z] 26個(gè)小寫字母
[0-9] 0至9數(shù)字
[A-Za-z0-9] 26個(gè)大寫字母、26個(gè)小寫字母和0至9數(shù)字
[\u4e00-\u9fa5]漢字
, 分割
運(yùn)算符的優(yōu)先級:
1.運(yùn)算符? 說明
2.\轉(zhuǎn)義符
3.(), (?:), (?=), []括號(hào)和中括號(hào)
4.*, +, ?, {n}, {n,}, {n,m}量詞限定符
5.^, $, \任何元字符、任何字符定位點(diǎn)和序列
6.|替換
正則的特性
1.貪婪性
所謂的貪婪性就是正則在捕獲時(shí),每一次會(huì)盡可能多的去捕獲符合條件的內(nèi)容。
如果我們想盡可能的少的去捕獲符合條件的字符串的話,可以在量詞元字符后加?
2.懶惰性
懶惰性則是正則在成功捕獲一次后不管后邊的字符串有沒有符合條件的都不再捕獲。
如果想捕獲目標(biāo)中所有符合條件的字符串的話,我們可以用標(biāo)識(shí)符g來標(biāo)明是全局捕獲
正則的方法:
1.reg.test(str)用來驗(yàn)證字符串是否符合正則 符合返回true否則返回false
2.reg.exec()用來捕獲符合規(guī)則的字符串
3.reg.compile()用于改變RegExp。既可以改變檢索模式,也可以添加或刪除第二個(gè)參數(shù)。
4.str.match(reg)如果匹配成功,就返回匹配成功的數(shù)組,如果匹配不成功,就返回null
5.str.replace()
6.str.search(reg);如果匹配成功,就返回匹配成功的字符串的位置,與indexOf相似
7.str = str.split(/reg/i);用來分割字符串
reg.compile(newReg); // newReg替換了reg