正则表达式以获取javascript中的域名?
我有一个从url获取主域名的正则表达式问题。这是如果我有下面给出的URL正则表达式以获取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
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