Google cloud firestore “在哪里放置?”;我";Firestore安全规则str.matches(regex)中的标志?

Google cloud firestore “在哪里放置?”;我";Firestore安全规则str.matches(regex)中的标志?,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,我正在为我的Firebase Firestore项目编写安全规则,但我似乎找不到一个引用来举例说明使用正则表达式作为参数的正确语法。我现在用的是: request.resource.data.str.matches("^[a-z0-9]+$"); 现在我的问题是,表达式中不区分大小写的标志“i”应该放在哪里?我尝试了一些不同的组合,但没有成功 谢谢。Firestore安全规则遵循正则表达式的规则 这意味着您可以为匹配定义一个非捕获组,并将该组标记为使用不区分大小写的匹配: allow writ

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

request.resource.data.str.matches("^[a-z0-9]+$");
现在我的问题是,表达式中不区分大小写的标志“i”应该放在哪里?我尝试了一些不同的组合,但没有成功


谢谢。

Firestore安全规则遵循正则表达式的规则

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

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]+$");

链接的RE2语言描述表明标志出现在表达式字符串的分组语法中。它不是一个应用于整个模式的函数参数,就像在其他语言中一样。搜索此文档中的“标志”以查看语法。谢谢@DougStevenson。对RE2做了一些阅读,以及它与PCRE的比较。有助于进一步澄清这件事。伟大的弗兰克。我想知道如何在不扩展角色组的情况下实现它。你认为哪种做法更好?既不是更好也不是更坏。我自己更喜欢后者,因为它更地道,所以人们第一眼就更容易认出它,这对于常规表达尤其重要。