云存储拆分的Firebase安全规则()示例错误

云存储拆分的Firebase安全规则()示例错误,firebase,firebase-security,firebase-storage,Firebase,Firebase Security,Firebase Storage,我试图遵循Firebase云存储安全规则参考中列出的示例: 我将split()的示例复制并粘贴到我的存储规则中,它不会编译/让我保存: 根据提供的正则表达式拆分字符串并返回字符串列表。使用谷歌RE2语法 我得到的错误是: 意外“。 就我的一生而言,我无法运行提供的示例代码,也无法进行更改并使Regex按预期工作 是否有人对允许上载名为“file.*”的文件有任何建议??规则中似乎缺少\。试试这个: // Allow files named "file.*" to be uploaded mat

我试图遵循Firebase云存储安全规则参考中列出的示例:

我将
split()
的示例复制并粘贴到我的存储规则中,它不会编译/让我保存:

根据提供的正则表达式拆分字符串并返回字符串列表。使用谷歌RE2语法

我得到的错误是:
意外“。

就我的一生而言,我无法运行提供的示例代码,也无法进行更改并使Regex按预期工作


是否有人对
允许上载名为“file.*”的文件有任何建议?

规则中似乎缺少
\
。试试这个:

// Allow files named "file.*" to be uploaded
match /{fileName} {
  allow write: if fileName.split('.*\\..*')[0] == 'file'
}

通常,在使用正则表达式时,首先要检查反斜杠。不同的系统使用反斜杠进行转义,有时(如此处)需要加倍转义。

文档错误。改为使用此(“\”):


弗兰克,谢谢你的快速回复。您的正则表达式
split('.\\\..*')[0]
示例对我仍然不起作用,但您对双转义的评论使我走上了正确的道路。似乎您需要执行
split('\\.')[0]
来获取实际的文件名,这对我很有用。我是否遗漏了一些东西,或者文档中的示例有点遗漏?我在一次更改后立即进行测试时也出现了误判,似乎规则到达节点或删除一些缓存时存在传播延迟?@briannyc:您对延迟的观察是正确的。注意:规则会立即上传到云存储服务器,但可能需要5分钟才能生效。@YosefBro这个问题是关于实时数据库的,它不允许在其密钥中使用
/
。这个问题是关于云存储的,在名称中使用
来分隔基本文件名及其扩展名实际上是很常见的。
// Allow files named "file.*" to be uploaded
match /{fileName} {
  allow write: if fileName.split('.*\\..*')[0] == 'file'
}
// Allow files named "file.*" to be uploaded
match /{fileName} {
  allow write: if fileName.split('\\.')[0] == 'file'
}