📜  从 url js 中提取域 - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:15.246000             🧑  作者: Mango

从 URL JS 中提取域 - Javascript

在Javascript中,我们可以使用正则表达式方法来从URL中提取域名。此外,我们也可以使用内置的URL对象和一些字符串处理方法来实现该功能。接下来,我们将提供两种方法来从URL中提取域名。

方法一:正则表达式

使用正则表达式,我们可以匹配URL中的域名部分。

function extractDomainFromUrl(url) {
  var domain;
  // 匹配URL中的域名部分
  var match = url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)/im);
  if (match) {
    domain = match[1];
  }
  return domain;
}

该函数将接受一个URL作为参数,并返回该URL的域名。在该函数中,我们首先定义了一个变量domain,用于存储提取的域名。然后,我们使用正则表达式匹配URL中的域名部分。正则表达式的解释如下:

  • ^ 匹配字符串的开始
  • (?:https?:\/\/)? 匹配可选的协议部分:http或https
  • (?:[^@\n]+@)? 匹配可选的用户名和密码部分:username:password@
  • (?:www\.)? 匹配可选的www前缀
  • ([^:\/\n?]+) 匹配域名部分
  • \/ 匹配斜杠
  • im 标志用于表示匹配整个输入字符串,并且不区分大小写

最后,我们在匹配成功后将提取的域名存储在domain变量中并返回它。我们可以通过调用该函数并传递URL作为参数来提取域名。例如:

var url = "https://www.google.com/search?q=url+js&oq=url+js&aqs=chrome.0.0j69i60l2j69i65l3.1897j1j7&sourceid=chrome&ie=UTF-8";
var domain = extractDomainFromUrl(url);
console.log(domain); // "google.com"
方法二:URL对象和字符串处理方法

在此方法中,我们将使用内置的URL对象和一些字符串处理方法来提取URL中的域名。

function extractDomainFromUrl2(url) {
  var hostname;
  // 创建URL对象
  var parser = new URL(url);
  // 提取hostname
  hostname = parser.hostname;
  // 移除www前缀
  hostname = hostname.replace(/^www\./i, "");
  return hostname;
}

该函数将接受一个URL作为参数,并返回该URL的域名。在该函数中,我们首先定义了一个变量hostname,用于存储提取的域名。然后,我们使用内置的URL对象创建一个解析器,并将URL传递到该解析器中。接下来,我们从解析器中提取hostname属性,该属性包含了URL的域名部分。

然而,我们还需要从该域名中移除www前缀。为此,我们使用replace()方法和一个正则表达式。该正则表达式将匹配以www.开头的字符串,并将其替换为空字符串。最后,我们将提取的域名存储在hostname变量中并返回它。

我们可以通过调用该函数并传递URL作为参数来提取域名。例如:

var url = "https://www.google.com/search?q=url+js&oq=url+js&aqs=chrome.0.0j69i60l2j69i65l3.1897j1j7&sourceid=chrome&ie=UTF-8";
var domain = extractDomainFromUrl2(url);
console.log(domain); // "google.com"

以上就是从URL JS中提取域的两种方法,其中使用正则表达式方法更为灵活且适用于所有浏览器环境,而使用URL对象和字符串处理方法则需要支持ES6标准的浏览器环境才能使用。