使用忽略标点符号的正则表达式查询MongoDB

时间:2019-04-02 23:33:03

标签: javascript regex reactjs mongodb express

我正在尝试查询MongoDB中的集合,以查找名称与通过react-router-dom的NavLink匹配字符串prop的项目。通过NavLink的prop带有连字符来代替空格,但是在某些名称以及空格中也带有连字符。由于当前的正则表达式将所有连字符替换为空格,因此导致未找到错误。

在前端,我使用的是NavLink,因此我摆脱了遵循URL最佳做法(例如网址:Int)的空白,这将参数Pipe1.Output准确地发送给了我db。

现在我正在使用以下内容:

example.com/this-persons-name

问题在于,如果名称中已经包含连字符(例如:this-persons-name),则找不到该人,因为它搜索的是db.collection('people').findOne({ name: {'$regex': req.params.person.replace(/-/g, ' '), $options: 'i'}})

这适用于以下字符串:

this-persons name

this persons name

thispersonsname

this-persons name

1 个答案:

答案 0 :(得分:0)

我通过不同的方式解决了这个问题。我为每个项目创建了一个slug属性