用于Firestore约束文档ID的reg表达式是什么?

cho*_*Bao 2 regex firebase google-cloud-firestore

Firestore对ID有限制(https://firebase.google.com/docs/firestore/quotas

什么是Javascript正则表达式,用于检查以下方面的约束:

  • 必须是有效的UTF-8字符
  • 不得超过1,500个字节
  • 不能包含正斜杠(/
  • 不能仅包含一个周期(.)或两个周期(..
  • 无法匹配正则表达式 __.*__

Cor*_*ion 7

让我们看一下这些要点:

必须是有效的UTF-8字符

我认为这至少是您选择的编程语言的问题,至少直到您告诉我们您具有原始八位字节并且想要一个正则表达式来验证原始八位字节序列是有效的UTF-8序列为止。

不得超过1,500个字节

这意味着 .{1,1500}

不能包含正斜杠

这将表示[^/]{1,1500}而不是.{1,1500}

不能仅包含一个或两个周期。

这意味着类似(?!\.\.?)

无法匹配正则表达式 __.*__

这意味着类似(?!__.*__)。也许这应该意味着没有ID被允许开始使用__,并结束__,但也许这意味着没有ID允许含有一子,与开始/结束__。我的方法很安全,并且拒绝包含子字符串的任何内容。

结合以上内容,我们得到如下结果:

^(?!\.\.?$)(?!.*__.*__)([^/]{1,1500})$
Run Code Online (Sandbox Code Playgroud)

将最大长度缩短到合理的水平,例如10个测试用例:

接受
foo
foo.
foo..
Run Code Online (Sandbox Code Playgroud) 拒绝
bar/
12345678901
foo__bar__
.
..
Run Code Online (Sandbox Code Playgroud)

小提琴