URL验证正则表达式

时间:2011-10-17 13:13:57

标签: php regex validation url

据我所知,还有许多类似于标题的其他问题,但我提出这个问题的主要原因是我希望我的验证尽可能完美。以下是我的解释,哪个URL应该有效

http://(如果给定则匹配否则跳过), domain.com(应匹配& return validate) subdomain.domain.com(应匹配& return validate) www.com(应该返回false) http://www.com(应该返回false)

我根据自己的需要搜索了很多关于完美的正则表达式模式,但没有成功,所以这就是为什么我自己发布并在这里发帖想知道除了http://localhost之外其他任何有效URL都会跳过。 如果是,请纠正我。

模式:

  

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

1 个答案:

答案 0 :(得分:1)

我知道这实际上并没有直接回答你的问题,但除了REGEX之外,你还可以使用filter_var(),标志为FILTER_VALIDATE_URL,如果有效网址则返回URL,否则为FALSE:

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

您可以阅读here此函数使用的过滤器,尤其是有关VALIDATE_URL过滤器使用的标志的最后一行。

我实际上不知道它是如何在内部实现的,但我认为它比在野外互联网上可以找到的许多正则表达式更好。