【发布时间】: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