我有一个正则表达式:/^(?=[^A-Za-z]*([A-Za-z][^A-Za-z]*){6}$)\w+$/
但是它在validate的matches()中不被接受。显示无效字符和其他类似的错误。
"$username": {
// here
".validate": "$username.matches(/^(?=[^A-Za-z]*([A-Za-z][^A-Za-z]*){6}$)\w+$/)",
".write": "(auth.uid != null && newData.val() === auth.uid) || (auth != null && !newData.exists())"
}
要使表达式在规则中被接受,需要对表达式进行哪些更改?
1条答案
按热度按时间zxlwwiss1#
查看此页,似乎不支持Firebase Security Rules Regular Expressions lookarounds和非捕获组。
您可以编写不带任何lookaround的模式,重复捕获组6次,并且只使用
\w
,因为它只允许匹配:模式匹配:
^
字符串开头\w*
匹配可选前导字字符([A-Za-z]\w*){6}
匹配6次字符A-Z a-z,后跟可选的尾随字字符$
字符串结束请参见regex demo。
最后的工作命令显示注解: