当我在Cloudant查询中使用正则表达式查询时,如何忽略重音敏感?

时间:2017-10-07 21:45:45

标签: regex cloudant accent-insensitive

请帮我忽略Cloudant查询中的重音敏感

我在互联网上找到了一种忽略区分大小写(?i)的方法,它运行正常。但是对于口音不敏感却不起作用。

这是我的Cloudant查询的一部分:

{
  "modelo": { 
     "$regex": "(?i)sábado" 
   }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

与第一位提到的评论者一样,您可能需要替换搜索中的字符。例如,您可以将搜索更改为此类

{
  "$or": [
    {"modelo": {"$regex": "(?i)sábado"}},
    {"modelo": {"$regex": "(?i)sabado"}}
  ]
}

如果您控制数据,因为它存储在Cloudant中,如果您在路上更换重音字符可能会更容易。如果您需要原始值,您可以添加一个新字段进行搜索。例如,您可以将modelo设置为sábado,然后添加其他字段,例如modelo_search,并将值设置为sabado。然后,无论何时执行搜索,都使用modelo_search字段并替换搜索字符串中的重音符号,如下所示:

{
  "modelo_search": { 
    "$regex": "(?i)sabado" 
  }
}

答案 1 :(得分:0)

我找到了解决方案: 只需要更改要搜索相应元音的字符串中的任何元音。

var dat = "sábado"
var res = dat.replace(new RegExp(/[aáAÁ]/g), "[aáAÁ]");