Я воспользовался всеми возможными способами для регулярного выражения для проверки правильности URL, но у меня не получилось. Что мне нужно, так это URL-адрес
google.com http://google.com https://google.com http://www.google.com https://www.google.com
но он не должен позволять, если это просто google
наконец, вещь является .extensions
являются обязательными
Я пробовал это /^[a-z0-9-]+(.[a-z0-9-]*)(.[a-z0-9-]*)$/
может кто-нибудь мне помочь в этом случае ..
Попробуйте это выражение
/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[az]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi
Он рассмотрит все случаи, о которых вы упомянули выше
Вы можете напрямую проверить URL-адрес, используя filter_var
и FILTER_VALIDATE_URL
if (filter_var($url, FILTER_VALIDATE_URL) !== false)
редактировать
С Regex
$subject = "http://www.google.com"; $pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i"; preg_match($pattern, $subject, $matches); print_r($matches);
Array ( [0] => http://www.google.com )
((https?:|[^.])\/\/w{0,3}[.]?google.[az]{2,4})|google.[az]{2,4}
Это не самый красивый, но он работает. Я проверил с http://regexpal.com/
Если вы хотите создать действительно хороший валидатор домена, вы должны получить базу данных домена tlds и сделать для них валидацию.
Mozilla имеет этот список: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
Вот модуль python для этого https://github.com/nmmmnu/TLDExtractor
Вы можете попробовать следующее
(^(http|https)://)?(www\.)?\w+\.com