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