2

Я пытаюсь включить следующее выражение в функцию совпадений, но я думаю, ошибки при попытке скомпилировать правила.Как проверить имена пользователей с помощью совпадений (regex)?

^[a-zA-Z](([\._\-][a-zA-Z0-9])|[a-zA-Z0-9])*[a-z0-9]$ 

.validate правило выглядит следующим образом:

".validate": "newData.val() === auth.uid   
&& newData.val().matches(^(?=.{5,10}$)(?!.*[._-]{2})[a-z][a-z0-9._-]*[a-z0-9]$)" 

я получаю:

" Invalid escape: '\.'" 
+0

соответствует (/^(? =. {5,10} $) (?!. * [._-] {2}) [az] [a-z0-9 ._-] * [a-z0 -9] $ /) – RootHacker

+0

@Pawan все еще получает ту же ошибку. – Relm

+0

@SalmanAA соответствует, как правило, в Firebase? – Relm

ответ

1

Похоже, вы не можете использовать lookarounds в Firebase, так что ваш шаблон, и весь подход должен быть настроен на учтите это.

Вашему текущему регулярному выражению требуется строка длиной от 5 до 10 символов и запрещается два последовательных символа ., _ и -. Первое условие должно быть проверено вне регулярного выражения с некоторым кодом, как newData.val().length >= 5 && newData.val().length <= 10 и второй раз требует перегруппировки и повторно Количественная оценка:

.matches(/^[a-z][a-z0-9]*([._-][a-z0-9]+)*$/) 

Посмотреть регулярное выражение demo.

Детали:

  • ^ - начало строки
  • [a-z] - строчная буква (если добавить /i в конце концов, это будет чувствительно к регистру)
  • [a-z0-9]* - ноль или более a-z и 0-9
  • ([._-][a-z0-9]+)* - a ., _ или - следуют с одним или несколькими (это требует, чтобы [a-z0-9] быть в конце, если есть ., _ или - в строке) символов из 0-9 и a-z диапазонов
  • $ - конец строки якоря.

Примечания вам не нужно, чтобы избежать символов внутри класса символов как . и _ не специальные символов внутри него, и - в конце или начало выражения скобки (класс символов) является буквальным дефис.

+1

В то время как шаблон Фрэнка '^ [a-zA-Z] (([\\ ._ \\ -] [a-zA-Z0-9]) | [a-zA-Z0-9]) * [a-z0 -9] $ 'кажется правильным, он включает в себя гораздо больше обратного отслеживания, а мой более линейный и следует принципу [unroll-the-loop] (http://www.softec.lu/site/RegularExpressions/UnrollingTheLoop). –

 Смежные вопросы

  • Нет связанных вопросов^_^