【问题标题】:Mongoose search using regex and ignoring special characters使用正则表达式并忽略特殊字符的猫鼬搜索
【发布时间】:2021-06-04 13:50:07
【问题描述】:

我想为我的网站制作一个搜索栏。我真的是使用 express 和 mongoose 的新手。

我的代码运行良好,但在这种情况下它不匹配:

Search input:  Mass energy
Entry name:    Mass-energy equivalence

由于破折号/连字符,这不匹配,我如何在 $regex 中忽略它?或者,如果有其他更好的方法可以做到这一点,请告诉我。提前致谢!

代码

router.get('/search/:search', param('search').not().isEmpty().trim().escape(), async (req, res) => {
  let search = req.params.search.replace(/[^\w\s]/gi, '');
  const data = await Entry.find({ 
    'name': {
      '$regex':   search,
      '$options': 'i'
    }
  },
  )
  .populate('category')
  .limit(10);
  res.json(data);
});

【问题讨论】:

  • 您可以用正则表达式 '.+' 替换最终用户的单词分隔符 (" ") 而不是删除它。这将导致 'Mass.?energy' 正则表达式搜索字符串用于 mongo

标签: javascript node.js regex express mongoose


【解决方案1】:

感谢@boly38

添加replace.replace(" ", '.+')搜索作品

  let search = req.params.search.replace(/[^\w\s]/gi, '').replace(" ", '.+');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多