JavaScript Регулярное выражение для сопоставления доменных имен (FQDN) - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно проверить домены

Допустимые сценарии:

*.domain.com (ИЛИ) domain.com (ИЛИ) domain.domain.com

Неверно:

.domain.com (ИЛИ) *domain.com

Запрещается использовать обратную или переднюю косую черту в начале строки

Я пытался использовать это выражение, но оно не удалось.

^(?:\*\.)(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}

1 Ответ

0 голосов
/ 22 февраля 2019

В regex101.com вы можете искать в библиотеке .Даже если нет ничего подходящего во вкусе ECMA-Script / JavaScript , я нашел его в PCRE : Домен с протоколом, домен третьего уровня, домен второго уровня, Домен верхнего уровня и порт. и разветвил его в соответствии с вашими потребностями:

^((\w+)\:\/\/)?(([\w\-]+|\*)\.)*([\w\-]+)\.(\w+)(\:(\d+))?$

ОБНОВЛЕНО : предыдущее регулярное выражение (v2) выполняется поиск только по частям и, следовательно, соответствует недействительным примерам, потому что часть была действительной.Исправлено это путем добавления begin ^ и end $.Теперь регулярное выражение отклоняет недействительное (*domain.com или .domain.com).

См. Мое регулярное выражение (v3), включая тесты

...