Проверка URL Regex - PullRequest
       1

Проверка URL Regex

1 голос
/ 17 октября 2011

Насколько я знаю, есть много других вопросов, похожих на заголовок, но моя главная причина, по которой я задаю этот вопрос, - я хочу, чтобы моя проверка была настолько идеальной, насколько я хочу. Вот мое объяснение, какой URL должен быть действительным

http:// (если дано, тогда совпадение, иначе пропустить), domain.com (должно совпадать и возвращаться для подтверждения) subdomain.domain.com (должно совпадать и возвращаться для подтверждения) www.com (должен вернуть false) http://www.com (должен вернуть false)

Я много искал идеальный шаблон регулярных выражений в соответствии с моими потребностями, но безуспешно, поэтому я сделал себе и отправляю сюда, чтобы узнать, будет ли пропущен любой другой действительный URL-адрес, кроме http://localhost. Если да, то, пожалуйста, поправьте меня.

Узор:

((: HTTP | HTTPS | FTP): //)??! (?:. WWW) ((WWW) [A-Z0-9] [A-Z0-9_-] * (?: . [А-Z0-9] [А-Z0-9 _-] *) +):??? (\ d +) /

1 Ответ

1 голос
/ 17 октября 2011

Я знаю, что на самом деле это не отвечает на ваш вопрос напрямую, но кроме REGEX, вы также можете использовать filter_var () , с флагом FILTER_VALIDATE_URL, который возвращает URL в случае действительного URL, или FALSE в противном случае:

   var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL));
   // string(18) http://example.com

Вы можете прочитать здесь фильтры, используемые этой функцией, особенно последнюю строку относительно флагов, используемых фильтром VALIDATE_URL.

Я на самом деле не знаю, как это реализовано внутри, но я полагаю, что это работает лучше, чем многие регулярные выражения, которые вы можете найти снаружи в диком интернете.

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