2013-12-09 43 views
1

我想出了以下正则表达式来匹配有效的url。如何捕获正则表达式中.com后的URL部分?

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?$ 

匹配(ftp | http | https)可选,域名没有.com或任何东西,但我也想捕获.com后的所有内容。

上述正则表达式验证http://stackoverflow.comlocalhostgoogle.com但不http://stackoverflow.com/questions/ask

回答

1

为了配合其余的URI,你可以在结尾处添加\S*

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?(\/|\/\w\S*)?$

但解析URL的各个组成部分是使用更好built-in parse_url function.

替代val IDATE本地URL:

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z0-9.]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?(\/|\/[\w#!:.?+=&%@!\-\/]*)?$

例如:172.18.11.178

演示:http://regex101.com/r/vV0sB5

+0

它使'localhost.'有效的URL这是错误的。 – codef0rmer

+0

正则表达式或'parse_url'函数? – anubhava

+0

尝试'https:// www.debuggex.com /'并将您的正则表达式粘贴到第一个文本框中并运行一些测试。 – codef0rmer

相关问题