Я опубликую, хотя вопрос был принят.
Это регулярное выражение все еще не завершено.
http://www.-1-.de
не является допустимым доменным именем, но пройдет ваш тест.
Вот что я использую:
~^
(?:ht|f)tps?://
(?:[a-z0-9] (?:[a-z0-9-]*[a-z0-9])? \.)*
(?:[a-z0-9][a-z0-9-]{0,62}[a-z0-9])
(?:\.[a-z]{2,5}){1,2}
$~ix
Охватывает TLD http (s), ftp (s) и .co.uk и тому подобное.Также охватывает субдомены, длина которых может быть 1 символ (m.example.com
для мобильных версий веб-страниц), но не допускает m-.example.com
.
Конечно, некоторые могут возразить против полноты регулярного выражения, поскольку для .pro
TLD требуетсяне менее 4 символов в качестве доменного имени.; -)
Кроме того, доменные имена IDN будут проходить через регулярное выражение только после преобразования (т. Е. В формате "xn--").