У меня получилась очень длинная регулярка, я её сделал, через или (|), как можно сократить?
echo preg_match('#^(https?://[a-z]+\.[a-z]{2,}|https?://www\.[a-z]+\.[a-z]{2,}|www\.[a-z]+\.[a-z]{2,}|[a-z0-9-]+\.[a-z]{2,})$#', 'my-site.ru');
Она правильно работает со всеми адресами.
//должны пройти проверку (результат 1)
site.ru
site.com
site.travel
www.site.ru
http://site.ru
https://site.ru
http://www.site.ru
https://www.site.ru
my-site.ru
mysite1.ru
//Не должны пройти проверку (результат 0)
http://
https://
http://qwerty
http://qwerty
http://qwerty.r
http://qwerty.21
http://site.qwerty.ru
http://qwerty.RU
http://.ru
https://.ru
http:site.ru
Сборка персонального компьютера от Artline: умный выбор для современных пользователей