var string = "https://example.com/app/something";
var string = "example.com/app/something";
new URL(string.origin)
如果string
协议一切正常,如果没有。有错误无法构建'网址':无效网址(...)
如何在不使用正则表达式的情况下获取根域?
答案 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;
参考文献:
答案 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中抛出。