如何验证输入字段是否为有效的电子邮件? Firestore安全规则中是否可以使用字符串函数或其他任何方法?
示例:
比方说,我有一个“请求”字段,该字段名为“电子邮件”。在我的Firestore安全规则中,我想检查电子邮件是否是有效的电子邮件地址:
- 包含“ @”
- 以.xx或.xxx(国家/地区域结尾)结尾
- 有一个“。”电子邮件的最后三个或两个字母之前
- “。”不是紧跟在'@'之后-至少必须在两个字母之间
例如example@emailprovider.com被接受,但example @ .com不被接受。
我知道此检查非常广泛,并且还想知道将这种验证引入安全规则是否有意义?
答案 0 :(得分:1)
您可以使用rules.String.matches
。
请参见
对整个字符串执行正则表达式匹配。
使用Google RE2 syntax的正则表达式。
如果您只想设置电子邮件地址,则必须将该字段验证为电子邮件地址。
答案 1 :(得分:1)
我找到了一个正则表达式的示例(并进行了一些调整):
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,5}$
其来源位于以下页面的底部:
https://firebase.google.com/docs/reference/security/database/regex
您还应该考虑该注释:
注意:这将拒绝某些有效的电子邮件。验证电子邮件地址 正则表达式通常很难。参见此site 在主题上更深入。