实例的正则表达式匹配总数

时间:2019-05-22 17:04:02

标签: javascript regex

我的测试字符串包含4个开方括号和闭方括号的实例,因此我希望以下正则表达式返回4个匹配项,但它仅返回1。

const test = "sf[[[[asdf]]]]asdf"
const regExp = new RegExp(/^.*\[.*\].*$/, "g");
const matches = test.match(regExp).length;

console.log(matches);

1 个答案:

答案 0 :(得分:8)

您可以结合使用递归和正则表达式:

function parse(str) {
  const matches = [];

  str.replace(/\[(.*)]/, (match, capture) => {
    matches.push(match, ...parse(capture));
  });

  return matches;
}

console.log(parse('sf[[[[asdf]]]]asdf'));
console.log(parse('st[[as[[asdf]]]a]sdf'));