Firebase实时数据库安全规则matches()正则表达式报错的修改方案咨询
Firebase Realtime Database 正则表达式适配修改方案
核心问题分析
你的正则无法被规则识别,主要是JSON字符串中的反斜杠未正确转义,导致解析时被判定为无效字符。
具体修改点
- 转义反斜杠:在JSON格式的安全规则里,所有反斜杠
\必须写成\\,否则会被当作无效转义序列。原正则中的\w需修改为\\w。 - 注:Firebase支持ECMAScript标准正则,你原有的正向预查(lookahead)语法是合法的,无需调整这部分逻辑。
修改后的完整规则代码
"$username": { // 修正后的.validate规则 ".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())" }
额外需求调整(可选)
如果你的实际需求是字符串至少包含6个字母(而非恰好6个),可以移除正向预查里的末尾$,修改为:
".validate": "$username.matches(/^(?=(?:[^A-Za-z]*[A-Za-z]){6})\\w+$/)",
内容的提问来源于stack exchange,提问作者Shourya Shikhar
相关产品推荐
相关产品推荐

