如何使用正则表达式获取主域名字符串?

时间:2015-01-06 06:16:33

标签: javascript regex url

我刚开始使用正则表达式,我遇到了问题。所以,如果有人可以帮助我,那将是非常好的。

问题是,如果我有一个如下所示的网址;

$url = http://www.blog.domain.com/page/category=?

并且只想要,如何在javascript中使用正则表达式来获取它。

谢谢

4 个答案:

答案 0 :(得分:1)

这也应该有效,但限制最多且更短:

var url = "http://www.blog.domain.com/page/category"
var result = url.replace(/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})(\/.+)$/i,"$4")

如果你想要" domain.com"而不仅仅是"域名",使用 $ 3 而不是 $ 4

逐步解释:

  • 正确的域语法:字母,数字和" - " /([a-z0-9-]*)/i
  • 域名扩展(2-6个字符):/(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 子域名:/(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 网址以http开头,可能是http s /^https?:\/\/(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 您可以在输入网址时输入或不输入http:/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
  • 然后是/:/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})(\/.+)$/i
  • 之后的内容

答案 1 :(得分:0)

尝试以下代码

 var url = "http://www.blog.domain.com/page/category=?";
 var match = url .match(/(?:http?:\/\/)?(?:www\.)?(.*?)\//);
 console.log(match[match.length-1]);

答案 2 :(得分:0)

请勿使用正则表达式:

使用hostname

  

URLUtils.hostname属性是包含域的DOMString   网址。

var x = new URL("http://www.blog.domain.com/page/category=?").hostname;
console.log(x);
如vishwanath所指出的,URL面临与IE <10的兼容性问题,因此对于这些情况,将需要正则表达式。

使用它:

var str = "http://www.blog.domain.com/page/category=?";
var res = str.match(/[^.]*.(com|net|org|info|coop|int|co\.uk|org\.uk|ac\.uk|uk)/g);
console.log(res);

=> domain.com

正则表达式中的列表可以根据您的需要进一步扩展。 可以找到TLD列表here

答案 3 :(得分:0)

您可以使用以下RegEx获取它:/.*\.(.+)\.[com|org|gov]/

您可以在此正则表达式中添加所有受支持的域扩展名。

RegEx101 Explanation

工作代码段:

var url = "http://www.blog.domain.gov/page/category=?";

var regEx = /.*\.(.+)\.[com|org|gov]/;

alert(url.match(regEx)[1]);