我在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相关问答推荐

无法使用 cypress 切换到新选项卡或窗口

(EpubReader) 在两列中动态拆分 html 元素

正则表达式:找到最小匹配...?不剪

如何完全隐藏 Link React 组件?

找出 JavaScript 对象数组中的差异和交集

react material UI 文本字段 onChange

等待 Javascript 函数完成执行并从中获取响应

无法加载 html2canvas

触发表单的提交事件不执行事件处理程序

Typescript 和 javascript 中的 & 是什么?

通过命令行指定参数跳转到 HTA 文件中的锚点

滑动侧边栏在内容下方打开

如何在Node JS中编写这个Java加密函数的类似功能

如何根据属性的总和组织对象数组?

MongoDB - 查询以获取与排序的第一项中的键匹配的项目

如何在 javascript 中制作响应式 WASD 控制器

在Javascript中每5秒交换一次多维数组

过滤嵌套对象并返回值以及父键

使用 Docker 部署 MERN 应用程序时 NGINX 出现 Socket.io 错误

firebase__webpack_imported_module_2__.auth.createuserwithemailandpassword 不是函数.?