Как я могу проверить URL сайта в Perl? - PullRequest
3 голосов
/ 08 апреля 2010

Мне нужно регулярное выражение для проверки URL сайта с помощью Perl.

Ответы [ 4 ]

11 голосов
/ 08 апреля 2010
10 голосов
/ 08 апреля 2010

Я не использую регулярные выражения.Я пытаюсь создать объект URI и посмотреть, что произойдет.Если это работает, у меня есть URI-объект, который я могу запросить, чтобы получить схему (другие вещи превращаются в «без схемные» URI).Я могу запросить объект, чтобы убедиться, что он удовлетворяет все, что мне нужно, например, конкретное доменное имя.Если я что-то делаю с URL-адресами, я все равно, вероятно, собираюсь сделать объект, поэтому я мог бы начать с него.

3 голосов
/ 08 апреля 2010
 use Regexp::Common qw /URI/;
    while (<>) {
        /($RE{URI}{HTTP})/       and  print "$1 is an HTTP URI.\n";
    }
2 голосов
/ 09 января 2015

Поскольку вы говорите о "URL-адресе веб-сайта", я полагаю, что вас интересуют только URL-адреса HTTP и HTTPS.

Для этого вместо использования регулярных выражений вы можете использовать модуль Perl Data :: Validate :: URI .

Например, для проверки URL-адресов HTTP и HTTPS:

use Data::Validate::URI;
my $url = "http://google.com";
my $uriValidator = new Data::Validate::URI();

print "Valid web URL!" if $uriValidator->is_web_uri($url)

И, чтобы проверить только HTTP URL:

print "Valid HTTP URL!" if $uriValidator->is_http_uri($url)

Наконец, для проверки любого правильно отформатированного URI:

print "Valid URI!" if $uriValidator->is_uri($url)

Если вместо этого по какой-либо причине вам действительно нужно регулярное выражение, вы можете использовать что-то вроде следующего для проверки HTTP / HTTPS / FTP / SFTP URL:

print "Valid URL!\n" if $url =~ /^(?:(?:https?|s?ftp))/i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...