【发布时间】:2019-06-11 01:43:50
【问题描述】:
我无法弄清楚为什么我的正则表达式会匹配在 Firebase 上用于验证用户名时不应该匹配的内容。
我已经尝试阅读其他帖子,例如 How to validate usernames using matches(regex)?,但我仍然无法弄清楚我做错了什么。
我使用的正则表达式是:
/^\\S+(\\s\\S+)*$/
这是我在这里定义的规则的一部分:
{
"rules": {
"users": {
"$uid": {
".read": "auth != null",
".write": "$uid === auth.uid",
".validate": "newData.hasChildren(['username'])",
"username": {
".validate": "newData.isString() && newData.val().length > 0 && newData.val().length < 21 && newData.val().matches(/^\\S+(\\s\\S+)*$/)"
}
}
}
}
}
我希望能够匹配不以空格字符开头或结尾的字符串,并且没有任何连续的空格字符。
不包括引号,我预计 "this is a username" 之类的东西会匹配," hello world" 会失败,但是当我在 Firebase 上使用模拟器测试它们时它们都通过了。
Firebase 模拟器输出:
【问题讨论】:
标签: regex firebase firebase-realtime-database firebase-security