Я не могу понять, почему мое регулярное выражение совпадает с тем, чего не должно быть при использовании в Firebase для проверки имен пользователей.
Я пробовал читать другие сообщения, такие как Как проверять имена пользователей с помощью совпадений(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: