代码之家  ›  专栏  ›  技术社区  ›  Rafael Gallardo

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

  •  0
  • Rafael Gallardo  · 技术社区  · 7 年前

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

    我在网上找到了一种忽略区分大小写的方法 (?i) ,工作正常。但不适用于重音敏感型。

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

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

    谢谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   markwatsonatx    7 年前

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

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

    {
      "modelo_search": { 
        "$regex": "(?i)sabado" 
      }
    }
    
        2
  •  0
  •   Rafael Gallardo    7 年前

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

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