javascript - 如何在 MongoDB 中创建动态正则表达式?

标签 javascript node.js mongodb

我想出了一个正则表达式来匹配包含特定短语的术语,该短语可以包含字母或数字,但不包括破折号。例如,test-123test123test 都将通过 ^[test0-9._-]+$ 进行匹配/gi.

但是,在 MongoDB 中,我不太确定如何动态搜索它。我试过了,

      const { search } = req.query;

      const regex = new RegExp(`/^[${search}0-9._-]+$/`, "ig");

      const results = await Test.find({ name: { $regex: regex } })

我也尝试过

 await Test.find({ name: { $regex: ".*[" + search + "0-9._-]+$.*", $options: "i" } })

而且,

      const regex = new RegExp(`/^[${search}0-9._-]+$/`, "ig");

      await Test.find({ name: regex });

不知道如何让它工作,我做错了什么?

最佳答案

打印 new RegExp(/^[${search}0-9._-]+$/, "ig") 返回以下模式 /\/^[test0-9._-]+$\//gi 这可能不是您想要实现的目标(额外的斜杠)。

您可以尝试这种方式(在 Mongo Shell 中测试):

let search = "test";
let regex = new RegExp(`^[${search}0-9._-]+$`, "ig");
db.test.find({ name: { $regex: regex } });

关于javascript - 如何在 MongoDB 中创建动态正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554604/

相关文章:

php - 验证 NodeJS 中使用 php crypt() 生成的哈希值?

c# - MongoDB + C# 驱动程序 + 查询元素数组,其中每个数组元素包含要查询的子文档

mongodb - Couchdb Mango 查询选择器对象数组中的对象

javascript - 单击时调用函数,除非单击发生在某些元素上

javascript - 将javascript垂直居中应用于多个div

javascript - 如何使用express(NodeJS)将大量文件从服务器发送到客户端

python - 字典对象不可调用

javascript - 使用索引元素 ID 时出现意外错误

javascript - (Javascript) 如何制作静音按钮以在单击时将背景音乐静音?

javascript - 将 php 迁移到 nodejs - 在客户端处理 session