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

时间:2018-10-17 08:07:37

标签: regex firebase google-cloud-firestore

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

用于检查以下内容约束的Javascript正则表达式是什么:

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

1 个答案:

答案 0 :(得分:5)

让我们看看这些要点:

  

必须是有效的UTF-8字符

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

  

不得超过1,500个字节

这将表示类似.{1,1500}

  

不能包含正斜杠

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

  

不能完全由一个或两个周期组成。

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

  

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

这意味着类似(?!__.*__)的东西。也许应该意味着不允许有任何ID以__ 开始并以__结尾,但也许这意味着不允许任何ID包含 一个以__开头/结尾的子字符串。我的方法很安全,可以拒绝包含子字符串的任何内容。

结合以上内容,我们会得到类似的东西:

^(?!\.\.?$)(?!.*__.*__)([^/]{1,1500})$

将一些测试用例的最大长度缩短到10左右。

接受
foo
foo.
foo..
拒绝
bar/
12345678901
foo__bar__
.
..

Fiddle