Firestore安全规则正则表达式

时间:2018-08-14 19:34:37

标签: google-cloud-firestore firebase-security-rules

我正在尝试基于matches正则表达式功能

评估 Firestore安全规则中的string

我的代码是username.matches('^(?!\.)(?!_)(?!.*\.$)(?!.*?\.\.)[a-z0-9_.]+$')

在线使用正则表达式模拟器可以正常工作

https://regex101.com/r/bDXMg3/2/

但是在“安全规则”中使用相同的语法会引发大量错误

enter image description here

我尝试将每个.

加倍转义

使用代码username.matches('^(?!\\.)(?!_)(?!.*\\.$)(?!.*?\\.\\.)[a-z0-9_.]+$')

它仅显示一个错误(开头为红色^符号),但随后却显示以下错误

enter image description here

Invalid regular expression pattern. Pattern: ^(?!\.)(?!_)(?!.*\.$)(?!.*?\.\.)[a-z0-9_.]+$.

我的目标是:

  • 不以._开头
  • 不以.结尾
  • 不允许连续两个.
  • 仅小写的letter charactersnumbers

谁能让我知道我在做什么错?

1 个答案:

答案 0 :(得分:1)

答案位于以下Wiktor Stribiżew链接中

  

如果真的是RE2在解析此模式,那么很明显-   它不支持先行/后备。

使用'^[a-z0-9][a-z0-9_]*([.][a-z0-9_]+)*$'

Google RE2 Regex Escaping periods and underscores error