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

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

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

    让我们看一下这些要点:



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



    这将意味着类似于.{1,1500}


    这将意味着类似于[^/]{1,1500}而不是.{1,1500}



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



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

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

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

    将最大长度缩短到10,这是一些测试用例:

    接受
    foo
    foo.
    foo..
    

    拒绝
    bar/
    12345678901
    foo__bar__
    .
    ..
    

    Fiddle

    10-04 22:06
    查看更多