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

Javascript 如何在MongoDB中创建动态正则表达式?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我提出了一个正则表达式来匹配包含特定短语的术语,可以包括字母或数字,但不包括破折号。例如,test-123、test123和test都将由^[test0-9.-]+$/gi匹配 然而,在MongoDB中,我不太确定如何动态搜索它。我试过了 const { search } = req.query; const regex = new RegExp(`/^[${search}0-9._-]+$/`, "ig"); const results = await

我提出了一个正则表达式来匹配包含特定短语的术语,可以包括字母或数字,但不包括破折号。例如,
test-123
test123
test
都将由
^[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 });
不知道如何让它工作,我做错了什么?

打印
新的RegExp(
/^[${search}0-9.-]+$/
,“ig”)
返回以下模式
/^[test0-9.-]+$\//gi
,这可能不是您想要实现的(附加斜杠)

您可以这样尝试(在Mongo Shell中测试):

打印
newregexp(
/^[${search}0-9.\u-]+$/
,“ig”)
返回以下模式
/\/^[test0-9.\u-]+$\//gi
,这可能不是您想要实现的(附加斜杠)

您可以这样尝试(在Mongo Shell中测试):

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