【问题标题】:Case insensitive - "SyntaxError: Invalid regular expression"不区分大小写 - “SyntaxError:无效的正则表达式”
【发布时间】:2018-09-21 16:32:48
【问题描述】:

我正在构建一个带有顶部菜单的 Angular 网页,其中的搜索输入给我带来了一些问题……我正在使用 RESTHeart API 来构建它的查询。 在发送到 API 的查询中,我发送以下内容:

[a-zA-Z0-9.@-]{4,99}

此模式应确保搜索输入不区分大小写并且效果不佳,因此我查看了https://restheart.org/learn/query-documents/ 此处的文档,并且正则表达式应包含 (?i) 以便被解释为“不区分大小写” . 所以我做到了 - 这是正在发送的模式:

(?i)[a-zA-Z0-9.@-]{4,99}

现在我在加载菜单时遇到错误:

ERROR SyntaxError: Invalid regular expression: /^(?i)[a-zA-Z0-9.@-]{4,99}$/: Invalid group

我还尝试对 (?i) 部分进行硬编码,因为问题似乎出在该特定部分...

有人知道为什么会发生这种情况吗? 我试过https://regex101.com/r/o684Hu/2/,它在那里工作......

感谢您的宝贵时间,

尤尼托。

【问题讨论】:

  • 您的正则表达式已经不区分大小写。只需删除内联修饰符。该错误的原因是 JS 不支持内联修饰符。
  • (?i) 是 JavaScript 不支持的 PCRE 扩展。这些在线正则表达式测试人员确实应该更明确地说明他们支持哪些正则表达式方言,以及如果您不了解这些差异会发生什么。

标签: regex case-insensitive restheart


【解决方案1】:

在 mongodb 中,$regex 查询运算符允许选项

对于不区分大小写的正则表达式查询,使用 RESTHeart 的查询过滤器应如下所示

GET /db/coll?filter={"field":{"$regex": "[a-zA-Z0-9.@-]{4,99}", "$options": "i"}}

有关更多信息,请查看 mongodb 文档中的 options available for use with regular expression

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2013-11-12
    相关资源
    最近更新 更多