- ES6 教程
- ES6 - 首頁
- ES6 - 概述
- ES6 - 環境
- ES6 - 語法
- ES6 - 變數
- ES6 - 運算子
- ES6 - 決策制定
- ES6 - 迴圈
- ES6 - 函式
- ES6 - 事件
- ES6 - Cookie
- ES6 - 頁面重定向
- ES6 - 對話方塊
- ES6 - Void 關鍵字
- ES6 - 頁面列印
- ES6 - 物件
- ES6 - 數字
- ES6 - 布林值
- ES6 - 字串
- ES6 - 符號
- ES6 - 新的字串方法
- ES6 - 陣列
- ES6 - 日期
- ES6 - 數學
- ES6 - 正則表示式
- ES6 - HTML DOM
- ES6 - 迭代器
- ES6 - 集合
- ES6 - 類
- ES6 - Map 和 Set
- ES6 - Promise
- ES6 - 模組
- ES6 - 錯誤處理
- ES6 - 物件擴充套件
- ES6 - Reflect API
- ES6 - Proxy API
- ES6 - 驗證
- ES6 - 動畫
- ES6 - 多媒體
- ES6 - 除錯
- ES6 - 影像地圖
- ES6 - 瀏覽器
- ES7 - 新特性
- ES8 - 新特性
- ES9 - 新特性
- ES6 有用資源
- ES6 - 快速指南
- ES6 - 有用資源
- ES6 - 討論
ES6 - 正則表示式
正則表示式是一個描述字元模式的物件。正則表示式通常縮寫為“regex”或“regexp”。
JavaScript 的 RegExp 類表示正則表示式,並且 String 和 RegExp 都定義了使用正則表示式對文字執行強大的模式匹配和搜尋替換功能的方法。
正則表示式可以定義為 -
var pattern = new RegExp(pattern, attributes); OR var pattern = /pattern/attributes;
屬性可以具有以下值的任何組合。
| 序號 | 屬性及描述 |
|---|---|
| 1 |
G 全域性匹配 |
| 2 |
I 忽略大小寫 |
| 3 |
M 多行;將開頭和結尾字元(^ 和 $)視為作用於多行(即,匹配每行的開頭或結尾(由 \n 或 \r 分隔),而不僅僅是整個輸入字串的開頭或結尾) |
| 4 |
U Unicode;將模式視為 Unicode 程式碼點的序列 |
| 5 |
Y 粘性;僅從目標字串中此正則表示式的 lastIndex 屬性指示的索引處匹配(並且不嘗試從任何後面的索引處匹配) |
構造正則表示式
方括號
方括號([])在正則表示式的上下文中具有特殊含義。它們用於查詢字元範圍。
| 序號 | 表示式及描述 |
|---|---|
| 1 |
[...] 方括號之間的任何一個字元 |
| 2 |
[^...] 方括號之間不存在的任何一個字元 |
| 3 |
[0-9] 它匹配從 0 到 9 的任何十進位制數字 |
| 4 |
[a-z] 它匹配從小寫 a 到小寫 z 的任何字元 |
| 5 |
[A-Z] 它匹配從大寫 A 到大寫 Z 的任何字元 |
| 6 |
[a-Z] 它匹配從小寫 a 到大寫 Z 的任何字元 |
上面顯示的範圍是一般的;您還可以使用範圍 [0-3] 來匹配從 0 到 3 的任何十進位制數字,或使用範圍 [b-v] 來匹配從 b 到 v 的任何小寫字元。
量詞
方括號字元序列和單個字元的頻率或位置可以用特殊字元表示。每個特殊字元都有特定的含義。+、*、? 和 $ 標記都跟隨字元序列。
| 序號 | 表示式及描述 |
|---|---|
| 1 |
p+ 它匹配包含至少一個 p 的任何字串。 |
| 2 |
p* 它匹配包含零個或多個 p 的任何字串 |
| 3 |
p? 它匹配包含一個或多個 p 的任何字串 |
| 4 |
p{N} 它匹配包含 N 個 p 序列的任何字串 |
| 5 |
p{2,3} 它匹配包含兩個或三個 p 序列的任何字串 |
| 6 |
p{2, } 它匹配包含至少兩個 p 序列的任何字串 |
| 7 |
p$ 它匹配末尾為 p 的任何字串 |
| 8 |
^p 它匹配開頭為 p 的任何字串 |
| 9 |
[^a-zA-Z] 它匹配不包含從 a 到 z 和從 A 到 Z 的任何字元的任何字串 |
| 10 |
p.p 它匹配包含 p、後跟任何字元,然後再次後跟另一個 p 的任何字串 |
| 11 |
^.{2}$ 它匹配包含正好兩個字元的任何字串 |
| 12 |
<b>(.*)</b> 它匹配包含在 <b> 和 </b> 之間的任何字串 |
| 13 |
p(hp)* 它匹配包含 p 後跟零個或多個 hp 序列的任何字串 |
字面量字元
| 序號 | 字元及描述 |
|---|---|
| 1 |
字母數字 自身 |
| 2 |
\0 空字元 (\u0000) |
| 3 |
\t 製表符 (\u0009) |
| 4 |
\n 換行符 (\u000A) |
| 5 |
\v 垂直製表符 (\u000B) |
| 6 |
\f 換頁符 (\u000C) |
| 7 |
\r 回車符 (\u000D) |
| 8 |
\xnn 由十六進位制數 nn 指定的拉丁字元;例如,\x0A 與 \n 相同 |
| 9 |
\uxxxx 由十六進位制數 xxxx 指定的 Unicode 字元;例如,\u0009 與 \t 相同 |
| 10 |
\cX 控制字元 ^X;例如,\cJ 等效於換行符 \n |
元字元
元字元 只是一個以反斜槓開頭的字母字元,它賦予組合一個特殊的含義。
例如,您可以使用 '\d' 元字元搜尋一大筆錢:/([\d]+)000/。在這裡,\d 將搜尋任何數字字元的字串。
下表列出了一些可以在 PERL 風格正則表示式中使用的元字元。
| 序號 | 字元及描述 |
|---|---|
| 1 |
. 單個字元 |
| 2 |
\s 空格字元(空格、製表符、換行符) |
| 3 |
\S 非空格字元 |
| 4 |
\d 數字(0-9) |
| 5 |
\D 非數字 |
| 6 |
\w 單詞字元(a-z、A-Z、0-9、_) |
| 7 |
\W 非單詞字元 |
| 8 |
[\b] 字面量退格符(特殊情況) |
| 9 |
[aeiou] 匹配給定集合中的單個字元 |
| 10 |
[^aeiou] 匹配給定集合之外的單個字元 |
| 11 |
(foo|bar|baz) 匹配指定的任何備選方案 |
RegExp 屬性
| 序號 | 屬性及描述 |
|---|---|
| 1 |
RegExp.prototype.flags
包含 RegExp 物件標誌的字串 |
| 2 |
RegExp.prototype.global
是否將正則表示式針對字串中的所有可能匹配項進行測試,還是僅針對第一個匹配項進行測試 |
| 3 |
RegExp.prototype.ignoreCase
在嘗試匹配字串時是否忽略大小寫 |
| 4 |
RegExp.prototype.lastIndex
RegExp 物件的讀寫屬性。 |
| 5 |
RegExp.prototype.multiline
是否跨多行搜尋字串 |
| 6 |
RegExp.prototype.source
模式的文字 |
RegExp 方法
| 序號 | 方法及描述 |
|---|---|
| 1 |
RegExp.prototype.exec()
在其字串引數中執行匹配搜尋 |
| 2 |
RegExp.prototype.test()
測試其字串引數中的匹配項 |
| 3 |
RegExp.prototype.match()
對給定字串執行匹配並返回匹配結果 |
| 4 |
RegExp.prototype.replace()
將給定字串中的匹配項替換為新的子字串 |
| 5 |
RegExp.prototype.search()
在給定字串中搜索匹配項並返回模式在字串中找到的索引 |
| 6 |
RegExp.prototype.split()
透過將字串分成子字串將給定字串拆分為陣列 |
| 7 |
RegExp.prototype.toString()
返回表示指定物件的字串。覆蓋 Object.prototype.toString() 方法 |