仅匹配字母数字字符

时间:2014-07-05 06:09:54

标签: regex mongodb

这个问题实际上是对追随者的延伸。

Ignore special characters before match conditions

我正在使用mongodb聚合来从表中查找某些产品。以下是我需要改进的查询部分

{
   $match : { "name" :  { $regex :  "kdf8210"} }
}

现在,它确实匹配任何包含单词“kdf8210”的产品名称..但我需要它以匹配以下内容。

kdf.8210, kdf-8210, kdf.82-10

基本匹配应忽略其间的任何特殊字符。

我刚刚了解到$where不能用作聚合管道的一部分,因此引用问题的答案没有多大帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

^k[.-]?d[.-]?f[.-]?8[.-]?2[.-]?1[.-]?0$ 
  • 这允许将特殊字符.-插入任何位置(开头或尾端除外)。
  • 如果您想允许更多特殊字符,我们可以调整[.-]

如果您没有尝试匹配整个字符串,请删除^$个锚点。

  • ^锚点断言我们位于字符串的开头
  • $锚点断言我们位于字符串的末尾

请参阅demo