捕获给定URL的根域有什么好的正则表达式?

时间:2009-12-15 20:39:46

标签: javascript regex

理想情况下,我想从http://foo.com/bar?param=valuehttps://www.foo.com

等内容中捕获foo.com

感谢。

编辑:抱歉模糊不清。我将在Javascript中执行此操作。

第二次编辑:我应该发布我可怕的第一次尝试:https?:// w?w?w?[。]?[^?/]

4 个答案:

答案 0 :(得分:16)

你不需要正则表达式!让浏览器为您解析:

var a = document.createElement('a');
a.href = 'http://foo.com/bar?param=value';
a.hostname; // "foo.com"

瞧!

答案 1 :(得分:1)

如果在JavaScript中执行此操作,则甚至不需要正则表达式。您可以像这样使用location对象:

var host = window.location.host;

此链接提供了有关如何获取网址其他部分的更多信息:http://www.comptechdoc.org/independent/web/cgi/javamanual/javalocation.html

答案 2 :(得分:1)

要获得完全跨浏览器兼容性,只需使用文档对象,而不是窗口:

var theHost = document.location.host;

答案 3 :(得分:0)

如果您真的出售使用正则表达式而不是语言中的内置工具(例如PHP的parse_url函数),那么类似于:

(?:(\w+)://)([^/]+)(/\w+)?

将以非常粗略的方式进行,主机名在子组2中。这只是一个快速而肮脏的黑客(并且在所有情况下都不起作用),我建议使用该语言的内置 - 在工具中。

如果是Javascript和当前网址,请查看window.location.hostwindow.location.hostname