如果我将/a(b|c)/g
应用于“ab ac ad”,则会匹配“ab”和“ac”,但我只需要“a”。我不希望“广告”里面有“a”。
答案 0 :(得分:2)
您似乎不需要捕获组,需要预测:
/a(?=b|c)/g
请参阅此regex demo
console.log("abc\nacd".match(/a(?=b|c)/g));

Lookaheads仅检查字符串是否与模式匹配,但返回 true 或 false ,是否可以返回匹配(或是否回溯到模式或不)。
另一种方法是在模式部分上使用您需要获取的捕获组:
/(a)(?:b|c)/g
您需要的数据(a
)将在第1组中。请参阅this regex demo。
var re = /(a)(?:b|c)/g;
var str = 'abc\nacd';
var res = [];
while ((m = re.exec(str)) !== null) {
res.push(m[1]);
}
console.log(res);