是正則表達式中的一個重要概念,用于提取字符串中的特定部分
捕獲組是通過正則表達式中的圓括號 ()
定義的,它的作用是:
-
劃分和標記:將正則表達式的一部分劃分為邏輯單元。
-
提取數據:從字符串中提取符合組內模式的內容。
-
后續操作:可以在替換、分析或邏輯處理時使用捕獲到的數據。
使用捕獲組的基本示例
示例 1:簡單的捕獲
正則表達式:/Hello (World)/
字符串:Hello World
結果:
-
完整匹配:
Hello World
-
捕獲組 1:
World
(即括號中的部分)
const re = /Hello (World)/;
const result = re.exec("Hello World");
console.log(result);
// 輸出: ["Hello World", "World"]
?
break down mdn的示例代碼
// Match "quick brown" followed by "jumps", ignoring characters in between
// Remember "brown" and "jumps"
// Ignore case
const re = /quick\s(?<color>brown).+?(jumps)/dgi;
const result = re.exec("The Quick Brown Fox Jumps Over The Lazy Dog");
1. 正則表達式的部分解釋
-
整體表達式:
/quick\s(?<color>brown).+?(jumps)/dgi
-
quick
:-
匹配單詞 “quick”,不區分大小寫(由于
i
修飾符的作用)。
-
-
\s
:-
匹配一個空白字符(例如空格)。
-
-
(?<color>brown)
:-
命名捕獲組,匹配單詞 “brown” 并將其內容標記為
color
。稍后可以通過result.groups.color
來訪問這個內容。
-
-
.+?
:-
非貪婪模式,匹配任意字符,但盡可能少。
-
-
(jumps)
:-
普通捕獲組,用來匹配單詞 “jumps”。
-
-
修飾符
dgi
:-
d
:啟用正則表達式調試特性(ES2022)。 -
g
:全局匹配。 -
i
:忽略大小寫。
-
-
2. exec
方法如何工作
代碼中用到了 exec
方法,這里的功能是用正則表達式逐步匹配輸入字符串 "The Quick Brown Fox Jumps Over The Lazy Dog"
。讓我們分析其運行過程:
-
第一步:開始匹配正則模式。
-
匹配到
"Quick"
(不區分大小寫)。 -
匹配空格后,找到
"Brown"
,并將它捕獲為color
。 -
接著匹配剩余字符直到
"Jumps"
。
-
-
第二步:生成結果。
-
exec
方法返回一個包含以下內容的數組:-
result[0]
:完整匹配字符串,例如"Quick Brown Fox Jumps"
. -
result[1]
:普通捕獲組的內容,例如"Jumps"
. -
result.groups.color
:命名捕獲組的內容,例如"Brown"
。
-
-
?運行結果如下:
?