2011-03-24 38 views
2

我需要一个正则表达式来验证绝对URL或相对URL。正则表达式验证绝对URL或相对URL

  • http://www.example.com应该传递
  • /example/some.pdf应该传递
  • /example.com/some.pdf应该失败
  • 例子应该失败
+0

可能的重复[什么是最好的正则表达式来检查一个字符串是一个有效的URL](http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-检查是否是字符串是一个有效的网址) – 2011-03-24 15:20:20

+3

所有的例子**都是**有效的URL。 - 事实上,除了最后一个外,其余所有内容都是有效的**绝对**网址(您似乎混淆了相对的,绝对的,没有协议模式),只有最后一个是有效的相对URL。总之,目前还不清楚你在做什么。 – 2011-03-24 15:20:39

+0

缺陷#4:我在页面“http://www.somesite.com/blah.html”上。如果我有一个像...这样的页面上的链接它会带我到“http://www.somesite.com/example”,它可以是一个有效的网址,最终指向“http://www.somesite.com/example /index.html“或任何你可以用mod_rewrite重定向到的东西......并且在那个注释中,你可以用mod_rewrite将任何东西重定向到任何东西,所以IOW没有像严格的”无效的“URL那样的东西 – 2011-03-24 15:25:26

回答

0

Konrad Rudolph正确指出:OP中的所有示例都是有效的URL!你知道一个空字符串也是一个有效的URL吗?这是真的!如果你真的想验证一个URL,或者说我要说URI,要读的第一个文件是:RFC-3986 - Uniform Resource Identifier (URI): Generic Syntax。我一直在寻找到这个问题了一下,写了(我写)关于这个问题的文章:

Regular Expression URI Validation

注意与通用 URI这只是交易。您可能需要查看您感兴趣的方案(即HTTP)的其他特定要求,例如要求主机名是vaild DNS主机。

3
(http://|/)[^ :]+ 

另外的请注意,/example.com/some是一个有效的网址,因为文件夹中可能有句点,并且并非所有文件都有扩展名。

根据系统的不同,可能会有更多类型的字符添加到否定括号中。

最简单的方法是从服务器实际请求文件元数据来检查它实际存在的天气,但根本不会使用正则表达式。

+1

其他协议? HTTPS? FTP? SMB?这不太可靠。 – caiosm1005 2015-04-16 16:51:39