首页 > 解决方案 > 在 Firestore 安全规则 str.matches(regex) 中将“i”标志放在哪里?

问题描述

我正在为我的 Firebase Firestore 项目编写安全规则,但我似乎找不到一个参考来举例说明使用带有正则表达式作为参数的match()方法的正确语法。这是我现在使用的:

request.resource.data.str.matches("^[a-z0-9]+$");

我现在的问题是,将不区分大小写的标志“i”放在表达式中的什么位置?我尝试了一些不同的组合,但没有奏效。

谢谢。

标签: google-cloud-firestorefirebase-security

解决方案


Firestore 安全规则遵循正则表达式的Google RE2 格式。

这意味着您可以为匹配定义一个非捕获组,并将该组标记为使用不区分大小写的匹配:

allow write: if request.resource.data.str.matches("(?i:^[a-z0-9]+)$");

当然,您也可以简单地扩展字符组以包含大写和小写 ASCII 字符:

allow write: if request.resource.data.str.matches("^[a-zA-Z0-9]+$");

推荐阅读