Firestore 安全规则正则表达式

sie*_*fix 4 firebase-security google-cloud-firestore

我试图评估string公司的FireStore安全规则基础上,匹配的正则表达式功能

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

在线使用正则表达式模拟器它正在工作

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

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

在此处输入图片说明

我试图然后双重逃避每个 .

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

它只显示一个错误(开头的红色 ^ 符号),但随后它给了我以下错误

在此处输入图片说明

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

我的目标是:

  • 不以.或开头_
  • 不以a结尾 .
  • 不允许.连续两个
  • 只有小写letter charactersnumbers

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

sie*_*fix 5

答案在以下来自Wiktor Stribi?ew的链接中

如果解析此模式的确实是 RE2,那么很明显 - 它不支持前瞻/后视。

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

Google RE2 Regex 转义句号和下划线错误