Точка исключения с начала или с конца никнейма - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть пользовательский шаблон для проверки псевдонима пользователя Facebook:

(?:https:\/\/)?(?:http:\/\/)?(?:www\.)?(?:facebook)\.com\/(?:\w*#!\/)?([\w-\.]+)

Как исключить точку из начала или конца псевдонима?

Пример:

facebook.com/john.doe   // correct
facebook.com/.john.doe   // uncorrect started with dot (.)
facebook.com/john.doe.   // uncorrect ended with dot (.)

1 Ответ

0 голосов
/ 03 ноября 2018

Один из вариантов - заменить последнюю часть на \/\w+(?:\.\w+)*$.

Это будет соответствовать 1+ разу символа слова, за которым следует повторяющаяся группа, которая будет соответствовать 0+ разу точки и 1+ раза символу слова и утверждать конец строки $

Если может быть только 1 деталь, за которой следует точка, то * можно заменить на ?, чтобы сделать его необязательным.

Regex demo

Если он находится не в конце строки, вы можете использовать \/\w+(?:\.\w+)*(?!\S), используя отрицательный прогноз, чтобы утверждать, что то, что справа, не является символом без пробелов.

Regex demo

Обратите внимание, что (?:facebook) можно записать без структуры группировки, а начало можно записать, просто сделав s необязательным (?:https?:\/\/)?. В зависимости от разделителя вы не должны избегать косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...