bri*_*foy 10
我不使用正则表达式.我尝试创建一个URI对象,看看会发生什么.如果它工作,我有一个URI对象,我可以查询以获得该方案(其他东西变成"无方案"URI).
use URI;
while( <DATA> )
{
chomp;
my $uri = URI->new( $_, 'http' );
if( $uri->scheme ) { print "$uri is a URL\n"; }
else { print "$uri is not a URL\n"; }
}
__END__
foo.html
http://www.example.com/index.html
abc
www.example.com
Run Code Online (Sandbox Code Playgroud)
如果我正在寻找特定类型的URI,我可以查询该对象以查看它是否满足我需要的任何内容,例如特定的域名.如果我正在使用URL,我可能会创建一个对象,所以我不妨从它开始.
既然您谈论的是“网站 URL”,我猜您只对 HTTP 和 HTTPS URL 感兴趣。
为此,您可以使用 Perl 的Data::Validate::URI模块,而不是使用正则表达式。
例如,要验证 HTTP 和 HTTPS URL:
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)
Run Code Online (Sandbox Code Playgroud)
并且,仅验证 HTTP URL:
print "Valid HTTP URL!" if $uriValidator->is_http_uri($url)
Run Code Online (Sandbox Code Playgroud)
最后,验证任何格式正确的 URI:
print "Valid URI!" if $uriValidator->is_uri($url)
Run Code Online (Sandbox Code Playgroud)
相反,如果出于任何原因,您确实需要正则表达式,那么您可以使用类似以下内容来验证 HTTP/HTTPS/FTP/SFTP URL:
print "Valid URL!\n" if $url =~ /^(?:(?:https?|s?ftp))/i;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7217 次 |
| 最近记录: |