正则表达式以获取javascript中的域名?

正则表达式以获取javascript中的域名?,javascript,regex,url,Javascript,Regex,Url,我有一个从url获取主域名的正则表达式问题。这是如果我有下面给出的URL http://domain.com/return/java.php?hello.asp http://www.domain.com/return/java.php?hello.asp http://blog.domain.net/return/java.php?hello.asp http://us.blog.domain.co.us/return/java.php?hello.asp http://domain.co.u

我有一个从url获取主域名的正则表达式问题。这是如果我有下面给出的URL

http://domain.com/return/java.php?hello.asp
http://www.domain.com/return/java.php?hello.asp
http://blog.domain.net/return/java.php?hello.asp
http://us.blog.domain.co.us/return/java.php?hello.asp
http://domain.co.uk
http://domain.net
http://www.blog.domain.co.ca/return/java.php?hello.asp
http://us.domain.com/return/
从所有这些中,我应该只得到作为正则表达式的输出。。 那我该怎么做呢? 我用过

但这对我来说不起作用

  http://domain.net

有人能帮我解决这个问题吗。

你可以使用
URL
而不是regex

var url  = new URL("http://domain.com/return/java.php?hello.asp");
console.log(url.hostname);
=> domain.com

如果你也想要协议的话

var url  = new URL("http://domain.com/return/java.php?hello.asp");
console.log(url.protocol+"//"+url.hostname);
= > http://domain.com
刚刚添加了一个
/
,并更新了顶级域列表以匹配您的示例。
尽管我不建议将顶级域列表保留在regexp中。太多了

这有帮助吗

(http|https|ftp):\/\/([a-zA-Z0-9.])+/g
比赛在

http://domain.com
http://www.domain.com
http://blog.domain.net
http://us.blog.domain.co.us
http://domain.co.uk
http://domain.net
http://www.blog.domain.co.ca
http://us.domain.com

下面是一个稍微改变正则表达式的解决方案:

url.match(/https?:\/\/[^/]+((?=\/)|$)/g);
//tested with Chrome 38+ on Win7
基本检查斜杠
/
或字符串结尾
$

更新将JSFIDLE链接替换为内联Stackoverflow代码:

var url=[]http://domain.com/return/java.php?hello.asp',
'http://www.domain.com/return/java.php?hello.asp',
'http://blog.domain.net/return/java.php?hello.asp',
'http://us.blog.domain.co.us/return/java.php?hello.asp',
'http://domain.co.uk',
'http://domain.net',
'http://www.blog.domain.co.ca/return/java.php?hello.asp',
'http://us.domain.com/return/'
];
var htmlConsole=document.getElementById(“结果”);
var htmlTab=“”;
var htmlNewLine=“
”; htmlConsole.innerHTML=“”; for(URL中的变量id){ htmlConsole.innerHTML+=“URL:+URL[id]+htmlNewLine; var matchResults=url[id].match(/https?:\/\/[^/]+((?=\/)|$)/g); for(matchResults中的var innerIdx){ htmlConsole.innerHTML+=htmlTab+“匹配号:”+innerIdx+“匹配值:”+matchResults[innerIdx]+htmlNewLine; } htmlConsole.innerHTML+=htmlNewLine; }


域名可能以“/”或行尾结束,所以“匹配(/[^.]*。(com | net | org | info | coop | int | co\.uk | org\.uk | ac\.uk | uk | uk)(/|$)g)”可能有效。看起来有效,但我可能没有抓住要点?@Fumu7:你给出的东西都不起作用。因为它是一个特殊字符,在之后*part.:)@苏珊威廉姆斯:你找到解决办法了吗,还是还需要帮助IE支持是一个问题。
http://domain.com
http://www.domain.com
http://blog.domain.net
http://us.blog.domain.co.us
http://domain.co.uk
http://domain.net
http://www.blog.domain.co.ca
http://us.domain.com
url.match(/https?:\/\/[^/]+((?=\/)|$)/g);
//tested with Chrome 38+ on Win7