我的测试字符串包含4个开方括号和闭方括号的实例,因此我希望以下正则表达式返回4个匹配项,但它仅返回1。
const test = "sf[[[[asdf]]]]asdf"
const regExp = new RegExp(/^.*\[.*\].*$/, "g");
const matches = test.match(regExp).length;
console.log(matches);
答案 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'));