按条件从字符串的单词中删除后缀

Mao*_*hen 2 javascript regex

我试图删除不是abc并且不以abcxxabcyy开头的句子中的每个'abc' .

所以:

狗abc cat abcxx abcdfxx abcee abcyyli abcb

成为:

dog abc cat abcxx abc dfxx abc ee abcyyli abc b

它的意思是:

狗abc cat abcxx dfxx ee abcyyli b

我在尝试这样的事情:

var text = "dog abc cat abcxx abcdfxx abcee abcyyli abcb";
console.log(
  text.replace(/(^((?:abc(?!xx)(?!yy)).*)$)/g, '')
);
Run Code Online (Sandbox Code Playgroud)

如果我在每个单词上运行它,它知道检测有问题的单词,并删除所有单词(而不是仅删除'abc').

Cer*_*nce 5

您可以使用三个前瞻,两个否定(不xx,不yy)和一个正(需要abc后跟一个字符)来简化它:

const text = "dog abc cat abcxx abcdfxx abcee abcyyli abcb";
console.log(
  text.replace(/\babc(?!xx)(?!yy)(?=\w)/g, '')
)
Run Code Online (Sandbox Code Playgroud)