首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式以获取javascript中的域名?

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

Stack Overflow用户
提问于 2015-01-06 08:05:07
回答 4查看 1.3K关注 0票数 1

我有一个问题,正则表达式从一个网址获得主域名。也就是说,如果我有如下所示的urls。

代码语言:javascript
复制
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/

由此,我应该只将域作为正则表达式的输出。那我该怎么做呢?我用过;

代码语言:javascript
复制
var url = urls.match(/[^.]*.(com|net|org|info|coop|int|co\.uk|org\.uk|ac\.uk|uk)/g);

但它并不适用于

代码语言:javascript
复制
  http://domain.net

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

EN

回答 4

Stack Overflow用户

发布于 2015-01-06 08:24:16

您可以使用URL而不是regex。

代码语言:javascript
复制
var url  = new URL("http://domain.com/return/java.php?hello.asp");
console.log(url.hostname);
=> domain.com

或

如果你也想要协议

代码语言:javascript
复制
var url  = new URL("http://domain.com/return/java.php?hello.asp");
console.log(url.protocol+"//"+url.hostname);
= > http://domain.com
票数 4
EN

Stack Overflow用户

发布于 2015-01-06 08:51:41

这个有用吗?

代码语言:javascript
复制
(http|https|ftp):\/\/([a-zA-Z0-9.])+/g

火柴

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2015-01-06 09:01:49

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

代码语言:javascript
复制
url.match(/https?:\/\/[^/]+((?=\/)|$)/g);
//tested with Chrome 38+ on Win7

基本检查斜杠/或string end $

更新用内联堆栈溢出替换了jsFiddle链接-代码:

​

代码语言:javascript
复制
var urls = ['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("result");
var htmlTab = "    ";
var htmlNewLine = "<br />";

htmlConsole.innerHTML = "";
for (var id in urls) {

  htmlConsole.innerHTML += "URL: " + urls[id] + htmlNewLine;

  var matchResults = urls[id].match(/https?:\/\/[^/]+((?=\/)|$)/g);

  for (var innerIdx in matchResults) {
    htmlConsole.innerHTML += htmlTab + "MatchNumber: " + innerIdx + " MatchValue: " + matchResults[innerIdx] + htmlNewLine;
  }

  htmlConsole.innerHTML += htmlNewLine;

}
代码语言:javascript
复制
<div id="result">
</div>

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27794462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档