我在JS中有一个表达式来匹配所有包含(例如)'foo+'
的单词,但我想丢弃那些以其他模式结尾的单词.
有没有办法只在一个正则表达式中实现这一点?
例子:
myExp = /foo+\w*/; /*should add something to avoid ending with 'ba+r'*/
myExp.matchAll('boo, fo, food, foobaaar, foobr');
应为["food", "foobr"]
,不包括'foobaaar'
我在JS中有一个表达式来匹配所有包含(例如)'foo+'
的单词,但我想丢弃那些以其他模式结尾的单词.
有没有办法只在一个正则表达式中实现这一点?
例子:
myExp = /foo+\w*/; /*should add something to avoid ending with 'ba+r'*/
myExp.matchAll('boo, fo, food, foobaaar, foobr');
应为["food", "foobr"]
,不包括'foobaaar'
您想使用像(?!not_this)
这样的negative lookahead,当然要用适当的模式替换not_this
,以排除使用分词字符\b
或符合您逻辑的任何字符.
let myExp = /\bfoo+(?!\w*ba+r\b)\w*/g;
console.log(...' boo fo food foobaaar foobr foobaardd boofoo foodbar '.matchAll(myExp));