You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将searchtext变量传入NeDB的搜索查询正则表达式中

在NeDB中用变量构建正则实现标题模糊搜索

要把searchtext变量传入NeDB的正则查询里,不能用字面量的/.../写法,得用JavaScript的RegExp构造函数来动态创建正则表达式。

直接给你修改好的代码:

app.get("/search", (req, res) => {
  const searchtext = req.query.search;
  // 用RegExp构造函数创建正则,第二个参数'i'表示忽略大小写(可选,按需添加)
  const searchRegex = new RegExp(searchtext, 'i');

  storydb.find({ title: searchRegex }, function (err, output) {
    if (err) {
      console.log(err);
    } else {
      console.log(output);
    }
  });

  res.render("search");
});

补充说明:

  • RegExp(searchtext, 'i')里的'i'是可选标志,加上后搜索会忽略大小写,比如搜"test"能匹配"Test"或"TEST",提升用户体验
  • 如果你的searchtext可能包含正则特殊字符(比如.、*、?这些),最好先转义,避免这些字符被当作正则语法解析,比如可以加个简单的转义函数:
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
// 然后创建正则时用转义后的字符串
const searchRegex = new RegExp(escapeRegExp(searchtext), 'i');

内容的提问来源于stack exchange,提问作者Nsikan Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:25:19