首页 > web前端 > js教程 > 如何访问 JavaScript 正则表达式中的匹配组?

如何访问 JavaScript 正则表达式中的匹配组?

Mary-Kate Olsen
发布: 2024-12-29 16:42:18
原创
895 人浏览过

How Can I Access Matched Groups in JavaScript Regular Expressions?

访问 JavaScript 正则表达式中的匹配分组

当使用正则表达式来匹配字符串中的模式时,通常需要访问字符串的特定部分匹配的文本。 JavaScript 提供了多种方法来实现此目的。

在您的示例中,您正确使用了带括号的正则表达式来捕获字符串的一部分。但是,您遇到的问题不在于正则表达式本身,而在于您访问匹配组的方式。

使用 .exec() 访问组

. exec() 方法返回一个数组,其中包含整个匹配字符串作为第一个元素,后跟任何捕获的组。要访问第一个捕获组(示例中的“abc”部分),您可以使用 arr[1]:

let myString = "something format_abc";
let arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr[1]); // Prints: abc
登录后复制

使用命名捕获组

您还可以使用正则表达式语法命名捕获组,例如 (?)。这允许您通过名称访问捕获的文本:

let myString = "something format_abc";
let arr = /(?:^|\s)format_(?<text>.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc
登录后复制

具有命名捕获组的替代语法:

在 ECMAScript 2018 中,您可以使用略有不同的命名捕获组的语法,将组名称括在大写字母中大括号:

let myString = "something format_abc";
let arr = /(?:^|\s)format_({text}.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc
登录后复制

使用 .matchAll() 匹配多个出现

.matchAll() 方法是在 ECMAScript 2020 中引入的,并提供了基于迭代器的 API匹配字符串中多次出现的模式。它返回一个迭代器,该迭代器为每个匹配生成一个数组形式的匹配结果,您可以访问每个结果中捕获的组。

要在示例中使用 .matchAll():

let myString = "something format_abc and something format_xyz";
let matches = myString.matchAll(/(?:^|\s)format_(.*?)(?:\s|$)/g);

for (let match of matches) {
  console.log(match[1]); // Prints: abc, then xyz
}
登录后复制

以上是如何访问 JavaScript 正则表达式中的匹配组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板