Общее совпадение регулярных выражений для экземпляров - PullRequest
7 голосов
/ 22 мая 2019

Моя тестовая строка содержит 4 экземпляра открытой квадратной скобки и закрытой квадратной скобки, поэтому я хотел бы, чтобы следующее регулярное выражение возвращало 4 совпадения, но оно возвращает только 1.

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

console.log(matches);

1 Ответ

8 голосов
/ 22 мая 2019

Вы можете использовать комбинацию рекурсии и регулярных выражений:

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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...