Регулярное выражение: недопустимое имя спецификатора группы - реагировать на собственный - PullRequest
0 голосов
/ 29 мая 2020

Мое регулярное выражение работает в браузере, но показывает ошибку при разработке приложения expo (android), ориентированного на реакцию

Regex:

/^(?=.{0,20}$)(?![_.0-9])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$/

ошибка:

Invalid regular expression: invalid group specifier name
no stack

Как исправить эту ошибку, спасибо

1 Ответ

0 голосов
/ 29 мая 2020

Я предлагаю преобразовать (?<![_.]) lookbehind в (?!.*[_.]$) lookahead и немного сузить его (так как длину можно проверить с помощью части шаблона потребления):

/^(?!.*[_.]$)(?![_.0-9])(?!.*[_.]{2})[a-zA-Z0-9._]{0,20}$/

Details

  • ^ - начало строки
  • (?!.*[_.]$) - нет . или _ разрешены в конце
  • (?![_.0-9]) - no _, . и di git разрешены в начале
  • (?!.*[_.]{2}) - без следующих друг за другом . или _ разрешены где угодно
  • [a-zA-Z0-9._]{0,20} - от 0 до 20 букв, цифр, . или _
  • $ - конец строки.
...