第 1 组正则表达式匹配的 matchAll 数组

matchAll Array for Group 1 Regex Matches

我正在尝试找出一种方法来将我所有的第 1 组匹配项放入一个数组中,而无需使用 matchAll() 的循环。

这是我到目前为止的结果,但它只产生了第一个匹配项:

let str = "123ABC, 123ABC"
let results = str.matchAll(/123(ABC)/gi);
let [group1] = results;
alert(group1[1]);

如何将 matchAll 的结果放入一个数组中?又名:

// ABC, ABC

您可以使用Array.from将结果转换为数组并一次性执行映射:

const matches = Array.from(results, match => match[1])

如果您只需要字符串的 abc 部分,则不需要使用 matchAll 方法。您只需使用 positive lookbehind 正则表达式和 match 方法即可轻松获得所需的结果。

let str = "123ABC, 123ABC"
let results = str.match(/(?<=123)ABC/gi);
console.log(results)
// ["ABC","ABC"]

这里有一些关于这些类型的正则表达式的更多信息Lookahead and lookbehind

const str = "123ABC, 123ABC"

const results = Array.from(
  str.matchAll(/123(ABC)/gi), 
  ([_, g1]) => g1
)

console.log(results)