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

How to get the main domain string using regular expression?

本文关键字:字符串 获取 何使用 正则表达式      更新时间:2023-09-26

我刚刚开始使用正则表达式,遇到了一个问题。因此,如果有人可以帮助我,那就太好了。

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

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

并且只想要,我如何使用 JavaScript 中的正则表达式获取它。

谢谢

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

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开头,也许是https/^https?:'/'/(.+'.)*(([a-z0-9-]*)'.[a-z]{2,6})/i
  • 键入 url 时,您可以放置或不输入 http:/^(https?:'/'/)?(.+'.)*(([a-z0-9-]*)'.[a-z]{2,6})/i
  • 那么/: 之后是什么/^(https?:'/'/)?(.+'.)*(([a-z0-9-]*)'.[a-z]{2,6})('/.+)$/i

尝试以下代码

 var url = "http://www.blog.domain.com/page/category=?";
 var match = url .match(/(?:http?:'/'/)?(?:www'.)?(.*?)'//);
 console.log(match[match.length-1]);
您可以使用

以下正则表达式获取它: /.*'.(.+)'.[com|org|gov]/

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

正则表达式101解释

工作代码片段:

var url = "http://www.blog.domain.gov/page/category=?";
var regEx = /.*'.(.+)'.[com|org|gov]/;
alert(url.match(regEx)[1]);

不要为此使用正则表达式:

使用主机名:

URLUtils.hostname 属性是一个包含 网址。

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

正则表达式中的列表可以根据您的需要进一步扩展。可在此处找到顶级域名列表