我需要一个正则表达式来验证使用Perl的网站URL。如何验证Perl中的网站URL?
回答
use Regexp::Common qw /URI/;
while (<>) {
/($RE{URI}{HTTP})/ and print "$1 is an HTTP URI.\n";
}
可能是“HTTP URI”是一个更好的示例。 – ysth 2010-04-08 11:01:35
网站网址可以是HTTP或HTTPS。 – 2015-01-09 16:01: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
如果我正在查找特定类型的URI,我可以查询该对象以查看它是否满足我需要的任何内容,例如特定的域名。如果我正在使用URL进行某些操作,我可能会创建一个对象,所以我不妨从它开始。
@brian,你的脚本看起来不太正确。我猜想没有http服务标识符,www.example.com仍然是一个有效的url,但脚本说的是相反的。 – Mike 2010-04-08 11:54:59
主机名称不是URL。如果没有计划,www.example.com可能是主机名,文件或其他内容。没有什么魔法可以自己区分这些东西。这是提供内容和意义的网址。 – 2010-04-08 12:11:33
好吧,看来Regexp :: Common qw/URI /可以做同样的事情。但是,如果有人应该手动写下很多没有http标识的url,那么这些url是否会被认为是有效的? – Mike 2010-04-08 12:11:57
由于您在谈论“网站网址”,我想您只对HTTP和HTTPS网址感兴趣。
为此,您可以使用Perl的模块,而不是使用正则表达式。
例如,为了验证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;
- 1. 验证网站URL/SiteMap的工具?
- 2. 如何验证JPA实体的网站URL字段?
- 3. 验证网站的凭证
- 4. 如何验证网站的所有权?
- 5. 如何验证网站的所有权?
- 6. Google Analytics如何验证网站?
- 7. 如何从Firefox插件验证网站?
- 8. 如何验证整个网站?
- 9. 验证Spring MVC网站中URL参数的最佳方法?
- 10. 验证过程中添加WWW网站的URL
- 11. AOL OpenID的网站验证
- 12. 网站的HTML验证器
- 13. 网站的特定验证
- 14. 如何使用html5验证器验证php网站
- 15. 验证Java网络中的随机URL
- 16. 验证子域中的网站?
- 17. 验证远程网站的SSL证书
- 18. 网站身份验证
- 19. C#登录网站验证
- 20. CURL验证到网站
- 21. 自动验证网站
- 22. 从外部网站验证
- 23. 如何在perl中验证数字?
- 24. 如何在Perl中验证主机名?
- 25. 如何使用python实现网站的帐户凭证验证
- 26. 如何在Primefaces客户端网站验证(CSV)中使用Hibernate验证器
- 27. 网站上是否有PHP验证网站或测试网站?
- 28. 如何验证CakePHP 3.x中的URL?
- 29. 如何删除网站中的/ en/url
- 30. 在IIS中自动验证网站
您需要提供更多信息。你为什么需要它?什么是“网站网址”? – Jens 2010-04-08 10:27:44
为什么你需要验证网址?你在哪里得到它们,你在做什么。 – 2010-04-08 11:27:52
@Jens我想网站网址是指那些包含http或https服务标识符的网站。否则,网址可能包含以下内容:news:alt.rec.motorcycle或gopher://gumby.brain.headache.edu:151/7fonebook.txt – Mike 2010-04-08 11:57:43