是正则表达式中的一个重要概念,用于提取字符串中的特定部分
捕获组是通过正则表达式中的圆括号 ()
定义的,它的作用是:
-
划分和标记:将正则表达式的一部分划分为逻辑单元。
-
提取数据:从字符串中提取符合组内模式的内容。
-
后续操作:可以在替换、分析或逻辑处理时使用捕获到的数据。
使用捕获组的基本示例
示例 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"
。
-
-
运行结果如下: