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