正則表達式

正則表達式經(jīng)常用到,這篇文件做一下總結(jié)記錄

一、字符

字符:元字符和字面量字符
元字符是表示特殊含義的字符,包括:^ $ . [ ] { } - ? * + ( ) | \\字符。
字面量字符: 其他字符在表達式中都表示其原來的含義,為字面量字符。

1 位置字符

^:匹配字符串開始位置。
$:匹配字符串結(jié)束位置。

2 點字符

.:匹配除回車(\r)、換行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符。

3 選擇符

|: 表示‘或’關(guān)系,即/apple|banana/表示匹配apple或banana

4 轉(zhuǎn)義符

\: 那些有特殊含義的元字符,如果要匹配它們本身,就需要在它們前面要加上反斜杠。

5 特殊字符

一些不能打印的特殊字符

\n 匹配換行鍵。
\r 匹配回車鍵。
\t 匹配制表符 tab(U+0009)。
\v 匹配垂直制表符(U+000B)。
\f 匹配換頁符(U+000C)。
6 字符類

[]:有一系列字符可供選擇,只要匹配其中一個就可以了

6.1 脫字符(^)

脫字符只有在字符類的第一個位置才有特殊含義,否則就是字面含義。
[^abc]表示匹配不是a、b、c字符的其他字符
[^a-z]表示匹配不是a、b、c....到z字符的其他字符

6.2 連字符(-)

對于連續(xù)序列的字符,連字符(-)用來提供簡寫形式,表示字符的連續(xù)范圍,[0-9],[a-z],[A-Z]

7 預(yù)定義模式

某些常見模式的簡寫方式

\d 匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9]。
\D 匹配所有0-9以外的字符,相當(dāng)于[^0-9]。
\w 匹配任意的字母、數(shù)字和下劃線,相當(dāng)于[A-Za-z0-9_]。
\W 除所有字母、數(shù)字和下劃線以外的字符,相當(dāng)于[^A-Za-z0-9_]。
\s 匹配空格(包括換行符、制表符、空格符等),相等于[ \t\r\n\v\f]。
\S 匹配非空格的字符,相當(dāng)于[^ \t\r\n\v\f]。
\b 匹配詞的邊界。
\B 匹配非詞邊界,即在詞的內(nèi)部。
8 重復(fù)類{}

精確匹配次數(shù)
{n}表示恰好重復(fù)n次,{n,}表示至少重復(fù)n次,{n,m}表示重復(fù)不少于n次,不多于m次。

9 量詞符

?:出現(xiàn)0次或1次,等同于{0, 1}
*:出現(xiàn)0次或多次,等同于{0,}。
+:出現(xiàn)1次或多次,等同于{1,}。

10 修飾符

i:忽略大小寫
g:全局匹配

let str = "banana"
// 單個修飾符
/Banana/.test(str)  // false
/Banana/i.test(str)  // true
str.replace(/a/,'x')  // 'bxnana'
str.replace(/a/g,'x')  // 'bxnxnx'
// 多個修飾符
str.replace(/A/ig,'x')  // 'bxnxnx'
str.replace(/A/g,'x')  // 'banana'
11 貪婪匹配

三個量詞符(?*+),默認情況下都是最大可能匹配,即匹配直到下一個字符不滿足匹配規(guī)則為止
*?:出現(xiàn)0次或多次,匹配時采用非貪婪模式
+?:出現(xiàn)1次或多次,匹配時采用非貪婪模式

二、實例方法
1 RegExp正則對象方法

RegExp.prototype.test() 執(zhí)行一個檢索,用來查看正則表達式與指定的字符串是否匹配。返回 true 或 false。
RegExp.prototype.exec() 執(zhí)行一個搜索匹配。返回一個結(jié)果數(shù)組或 null。

let str = 'banana'
let regExp = /^b[a-z]?/
regExp.test(str)    // true

let regExp = /an/g
let regExp2 = /(b)a(n)([a-z])/g
regExp.exec(str)    // [an]
regExp2.exec(str)   // ["bana", "b", "n", "a"]
2 String字符串方法

String.prototype.match() // 檢索返回一個字符串匹配正則表達式的結(jié)果
String.prototype.search() // 返回正則表達式在字符串中首次匹配項的索引;否則,返回 -1
String.prototype.replace() // 返回替代模式所取代的新的字符串
String.prototype.split() // 返回源字符串以分隔符出現(xiàn)位置分隔而成的一個 Array

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

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

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