访问 JavaScript 正则表达式中的匹配组
将字符串与正则表达式匹配时,了解如何检索捕获的子组至关重要。在 JavaScript 中,这是使用正则表达式中的捕获组来实现的。
考虑以下示例:
var myString = "something format_abc"; // Target substring: "abc" var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString); console.log(arr); // [" format_abc", "abc"] console.log(arr[1]); // undefined console.log(arr[0]); // format_undefined
未定义输出的原因:
虽然正则表达式正确匹配子字符串“abc”,但由于 console.log 中的打印不正确,访问 arr[1] 返回未定义声明。 console.log 将字符串 %A 解释为格式占位符,并尝试用第二个参数替换它,在本例中该参数未定义。
访问匹配组:
要提取匹配组,请使用arr[1]。这将正确返回“abc”。
迭代多个匹配 (ES2020):
JavaScript 2020 引入了 matchAll 方法,该方法生成一个可用于迭代字符串中的所有匹配项。
const string = "something format_abc"; const regexp = /(?:^|\s)format_(.*?)(?:\s|$)/g; const matches = string.matchAll(regexp); for (const match of matches) { console.log(match); console.log(match.index); }
这种方法提供了更干净、更处理多个匹配的直观方式。
以上是如何访问 JavaScript 正则表达式中捕获的子组?的详细内容。更多信息请关注PHP中文网其他相关文章!