2011-05-20 228 views
2

需要使用正则表达式(使用PHP)来匹配域名。例子:正则表达式与域名匹配

http://sub.domain.com/somefolder/index.html -> domain.com 
somedomain.info -> somedomain.info 
http://anotherdomain.org/home -> anotherdomain.org 
www.subdomain.anothersubdomain.maindomain.com/something/ -> maindomain.com 
+1

http://stackoverflow.com/questions/1236173/regexp-for-validating-au-domain-names和http://stackoverflow.com/questions/4963202/domain-regex -split – mario 2011-05-20 12:35:24

回答

-1

这解析完整的URL链接,你可以检查,匹配对象第二个元素进行域名

(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])? 

为我工作:)

0

您可以使用此一个,以及:

((?>[a-z\-0-9]{2,}\.){1,}[a-z]{2,8})(?:\s|/) 

它将匹配在给定文本中找到的所有域名,同时返回在fir中找到的域st组。

2

这可能不是正则表达式的工作,而是现有工具的选择语言。正则表达式不是一个魔术棒,你在涉及字符串的每一个问题上都会挥手致意。您可能想要使用已经编写,测试和调试的现有代码。

在PHP中,使用parse_url函数。

Perl:URI module

红宝石:URI module

.NET:'Uri' class

+1

+1 for parse_url :)谢谢! – 2013-07-10 07:46:36