Regex 什么样的正则表达式可以测试字符串是否是有效的Firebase密钥?
我正在编写一个应用程序,允许用户输入将作为密钥存储在Firebase中的值 Firebase关键要求:Regex 什么样的正则表达式可以测试字符串是否是有效的Firebase密钥?,regex,firebase,Regex,Firebase,我正在编写一个应用程序,允许用户输入将作为密钥存储在Firebase中的值 Firebase关键要求: max size - 768 bytes cannot contain . $ # [ ] / or ASCII control characters 0-31 or 127 allows single spaces, but not double or more spaces 如何将其表示为正则表达式?假设1字节=1个字符,并且既然您提到了ASCII,那么假设有效字符是ASCII字符32到
max size - 768 bytes
cannot contain . $ # [ ] / or ASCII control characters 0-31 or 127
allows single spaces, but not double or more spaces
如何将其表示为正则表达式?假设1字节=1个字符,并且既然您提到了ASCII,那么假设有效字符是ASCII字符32到126 “匹配任何允许的字符,精确匹配768次:” 但是,当我替换中的完整字符集时
^( (?! )|[ !"%&'()*+\,\-\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\^_`abcdefghijklmnopqrstuvwxyz{|}](?! )){1,768}$
# it breaks Regex101, saying it's too large.
^((?!)[!”%&'(*+\,\-\/0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ^(?!){1768}$
#它破坏了Regex101,说它太大了。
注意:没有正则表达式要容易得多:
#Python示例验证程序
def验证:
有效字符='abc123…'
如果不是(0
因此,Firebase团队:
有两个例外:.value
、.priority
和.info
是Firebase中的有效密钥,但仅用于访问特殊元数据,而不是作为记录id
旁注:我在文档中没有看到任何关于双空格的内容
我真的很感激你的回答。不幸的是,这还不太清楚。因为它应该接受<768的字符串,如果字符串超过768,regex.test(string)应该返回false。修复这两个问题很容易修改->^[…]{1768}$。唯一剩下的事情是使它可以接受“”(空格)而不是“”(双空格或更大的空格)。再次感谢您的帮助!噢,我错过了问题的主要部分,因为连续空格的数量有限。嗯……您可以将{768}
设置为{1768}
要覆盖1到768次,我没有理解对不起。正在使用的正则表达式是否支持前瞻性?这也是我要做的…请告诉我…如果你用0-9替换列表0123456789,用a-z和a-z替换,则不会中断。。。
# a space, not followed by a space
# or a character not followed by a double-space.
# This pattern, matched n times, locking the start and end of the string.
^( (?! )|[a](?! )){5}$
^( (?! )|[ !"%&'()*+\,\-\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\^_`abcdefghijklmnopqrstuvwxyz{|}](?! )){1,768}$
# it breaks Regex101, saying it's too large.
// in JavaScript
function isValidKey(text) {
return typeof text === 'string' &&
text.length &&
!text.match(/[.$\[\]#\/]/);
}