JavaScript正則表達式

基本表示符

字符 說明
\d 任何一個數字字符(等價于[0-9])
\D 任何一個非數字字符(等價于[^0-9])
\w 任何一個字符(字母/數字/下劃線)([a-zA-Z0-9_])
\W 任何一個非字符(非字母/數字/下劃)([^a-zA-Z0-9_])
\s 任何一個空白字符(等價于[\f\n\r\t\v])
\S 任何非一個空白字符(等價于[^\f\n\r\t\v])
\b 匹配詞的邊界。
\B 匹配非詞邊界,即在詞的內部。
* 零個或多個(等價于{0,})
+ 一個或多個(等價于{1,})
? 零個或一個(等價于{0,1})
. 除換行符外的任意單個字符
  • *?:表示某個模式出現0次或多次,采用非貪婪模式,匹配盡量少
  • +?:表示某個模式出現1次或多次,采用非貪婪模式,匹配盡量少
數量 說明
{} 表示精確匹配次數
{n} 表示恰好重復n次
{n,} 表示至少重復n次
{n,m} 表示重復n到m次
^ 定義字符串開頭
$ 定義字符串結尾
標志 描述
g 全局搜索(用于搜素替換)
i 不區分大小寫搜索
m 多行搜索
方法名 返回值 類型
exec 返回一個數組,未匹配返回null,匹配一個 RegExp
test 返回true或false,匹配一個 RegExp
match 返回一個數組,未匹配返回null,匹配所有 String
search 返回匹配到的位置索引,未匹配返回-1 String
replace 查找并且替換掉匹配到的子字符串 String
split 分隔一個字符串并將分隔后的子字符串存儲到數組中 String
  • 如果想知道一個字符是否被找到,可以使用testsearch方法
  • 如果想返回找到的具體字符,則可以使用execmatch方法

創建正則表達式

let regex = /xyz/;    //編譯時新建
let regex1 = new RegExp('xyz'); //運行時新建

轉義符

  • 使用RegExp方法生成正則對象,轉義需用兩個斜杠,因為字符串內部會先轉義一次,需要用斜杠轉義的,一共有12個字符:
    ^ . [ $ ( ) | * + ? { \\
(new RegExp('1\+1')).test('1+1')
// false
(new RegExp('1\\+1')).test('1+1')
// true

幾種方法的比較

//前兩種是String類型,后兩種是RegExp類型
let s = 'abba';
let r = /a/g;
console.log(s.match(r)); // 返回所有匹配["a", "a"]
console.log(s.search(r));  //找到索引0
console.log(r.exec(s)); // 匹配一個就返回["a"]
console.log(r.test(s)); //true
  • String 類型是用字符串去匹配模式
  • RegExp類型是用模式去測量字符串
  • RegExp方法在有g存在的情況下lastIndex有效
  • String方法會忽略glaseIndex無效

組匹配

let reg = /d(b+)d/g;
console.log(reg.exec("cdbbdbsbzdbd"));  //["dbbd", "bb"]
console.log("cdbbdbsbzdbd".match(reg)); //["dbbd", "dbd"]

如果正則表示式包含圓括號(即含有“組匹配”),則返回的數組會包括多個成員,第一個成員是整個匹配的結果,第二個成員是圓括號匹配的結果

demo地址

相關文章推薦:
RegExp對象
正則表達式
最全的常用正則表達式大全
用正則表達式匯總

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容