如何从字符串中获取域名?

时间:2016-06-24 15:02:44

标签: javascript

var string = "https://example.com/app/something"; var string = "example.com/app/something"; new URL(string.origin)

如果string协议一切正常,如果没有。有错误无法构建'网址':无效网址(...)

如何在不使用正则表达式的情况下获取根域?

3 个答案:

答案 0 :(得分:0)

问题仍然有点不清楚,我并不完全确定你是如何得到这个字符串的,但仅仅是为了争论,这是一个快速的解决方案:



function getHostname(str)
{
  str = (/^\w+:\/\//.test(str) ? "" : "http://") + str
  return new URL(str).hostname;
}

console.log(getHostname("https://example.com/app/something"));
console.log(getHostname("example.com/app/something"));




是的,从技术上讲,这在技术上确实使用正则表达式来检查协议是否存在,但它使用URL类实际解析主机名。

答案 1 :(得分:0)

正则表达式示例:



var example1 = "www.example1.com/test/path";
var example2 = "https://example2.com/test/path";
var example3 = "http://subdomain.example3.com/test/path";

function getDomain(str) {
  var matches = str.match(/^(?:https?:\/\/)?((?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6})/);
  if (!matches || matches.length < 2) return '';
  return matches[1];
}

console.log(getDomain(example1));
console.log(getDomain(example2));
console.log(getDomain(example3));
&#13;
&#13;
&#13;

参考文献:

答案 2 :(得分:-1)

如果我正确理解您的问题,您需要检查网址是否包含http或https协议。这可以通过JavaScript中内置的字符串函数轻松完成,如下所示。

var string = window.location;
if (string.includes('http') || string.includes('https'))
{
    //Do your logic here
}

更新:或者,您可以使用下面显示的子字符串功能。

var string = window.location;
if (string.indexOf('http') == 0)
{
    //Do your logic here
}

请注意,这也将验证http是否在字符串的开头,而不仅仅是在willy nilly中抛出。