gpt4 book ai didi

javascript - 如何在 javascript RegExp 中获取所有括号捕获

转载 作者:行者123 更新时间:2023-11-28 16:10:11 25 4
gpt4 key购买 nike

如果我这样做:

"A first sentence. A second sentence".match(/A\s([^\s]*)\ssentence/g)

返回:

["A first sentence", "A second sentence"]

如果我使用:

RegExp.$1

然后我只得到最后一个第一个括号捕获,所以“第二”

我想获取数组["first","second"]。是否可以?

最佳答案

您需要循环运行它,并构建集合。

var str = "A first sentence. A second sentence",
regex = /A\s([^\s]*)\ssentence/g,
result = [],
match;

while (match = regex.exec(str)) {
result.push(match[1]);
}

console.log(result);

因为正则表达式是全局的,所以它会记住最后一个匹配的位置,并在下次使用正则表达式时从那里开始。因此循环将继续,直到找不到更多匹配项。

在循环内,我们只需将子组添加到 result 数组中。

<小时/>

有些人喜欢使用 .replace 来达到此目的。

var str = "A first sentence. A second sentence",
regex = /A\s([^\s]*)\ssentence/g,
result = [];

str.replace(regex, function(str, g1) {
result.push(g1);
});

console.log(result);

我们实际上并没有进行字符串替换,而只是利用它重复搜索直到找不到更多匹配项的事实。

关于javascript - 如何在 javascript RegExp 中获取所有括号捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com