我在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));

Javascript相关问答推荐

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

无法检测卡片重叠状态的问题

用于编辑CSS样式的Java脚本

如何控制Reaction路由加载器中的错误状态?

JS:XML insertBefore插入元素

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

无法读取未定义的属性(正在读取合并)-react RTK

在不扭曲纹理的情况下在顶点着色器中旋转UV

将多个文本框中的输出合并到一个文本框中

递增/递减按钮React.js/Redux

为什么这个最小Angular 的Licial.dev设置不起作用?

Chrome上的印度时区名S有问题吗?

如何在单击Search按钮时更新Reaction组件?

如何在屏幕上显示时使用Java脚本和jQuery应用排序幻灯片动画

不能用于addEventListener中的变量

在Quill中,如何解析delta并替换其中的一些内容

我的本地计算机上的时区偏移量加倍,但在UTC服务器上工作正常.为什么?

如何合并对象列表中的连续重复值?

如何延迟Java脚本滚轮事件