Regex, чтобы не допустить последовательных точек и многое другое - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь создать регулярное выражение JavaScript, которое удовлетворяет следующим условиям

  1. az возможно
  2. 0-9 возможно
  3. тире, подчеркивание, апостроф, период возможен
  4. амперсанд, скобка, запятая, плюс невозможны
  5. последовательные периоды невозможны
  6. период не может быть расположен в начале и конце
  7. макс. 64 символа

До сих пор я пришел к следующему регулярному выражению

^[^.][a-zA-Z0-9-_\.']+[^.]$

Однако, это позволяет использовать последовательные символы точек в середине и не проверять длину.Кто-нибудь может подсказать мне, как добавить эти 2 условия?

Ответы [ 3 ]

2 голосов
/ 27 мая 2019

Вот и приходит моя идея.Используется \w ( короткий для символ слова ).

^(?!.{65})[\w'-]+(?:\.[\w'-]+)*$

и демонстрация в regex101 для попытки

2 голосов
/ 27 мая 2019

Вот шаблон, который, кажется, работает:

^(?!.*\.\.)[a-zA-Z0-9_'-](?:[a-zA-Z0-9_'.-]{0,62}[a-zA-Z0-9_'-])?$

Демо

Вот объяснение шаблона регулярных выражений:

^                          from the start of the string
    (?!.*\.\.)             assert that two consecutive dots do not appear anywhere
    [a-zA-Z0-9_'-]         match an initial character (not dot)
    (?:                    do not capture
    [a-zA-Z0-9_'.-]{0,62}  match to 62 characters, including dot
    [a-zA-Z0-9_'-]         ending with a character, excluding dot
     )?                    zero or one time
$                          end of the string
1 голос
/ 27 мая 2019

Вы можете использовать this регулярное выражение

^(?!^[.])(?!.*[.]$)(?!.*[.]{2})[\w.'-]{1,64}$

Распределение регулярных выражений

^ #Start of string
(?!^[.]) #Dot should not be in start
(?!.*[.]$) #Dot should not be in start
(?!.*[.]{2}) #No consecutive two dots
[\w.'-]{1,64} #Match with the character set at least one times and at most 64 times.
$ #End of string

Исправление в вашем регулярном выражении

  • - не должен находиться между классами символов.Это обозначает диапазон.Не используйте его между
  • [a-zA-Z0-9_] эквивалентно \w
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...