我有以下字符串
http://example.com
https://example.com
http://www.example.com
如何去掉 http://
或者 https://
?
我有以下字符串
http://example.com
https://example.com
http://www.example.com
如何去掉 http://
或者 https://
?
尝试使用以下代码:
var url = "https://site.com";
var urlNoProtocol = url.replace(/^https?\:\/\//i, "");
url.replace(/^https?:\/\//i, "")
与之等效。 - IanVS.replace(/^\/\/|^.*?:(\/\/)?/, '');
来获得更好的跨协议支持。 - gdibbleconst urlWithoutProtocol = new URL(url).host;
您可以使用URL()构造函数。它将解析您的url字符串,并且会有一个不带协议的条目。因此,使用正则表达式时会更加轻松:
let u = new URL('https://www.facebook.com/companypage/');
URL {
hash: ""
host: "www.facebook.com"
hostname: "www.facebook.com"
href: "https://www.facebook.com/companypage/"
origin: "https://www.facebook.com"
password: ""
pathname: "/companypage/"
port: ""
protocol: "https:"
search: ""
searchParams: URLSearchParams {}
username: ""
}
u.host // www.facebook.com
u.hostname // www.facebook.com
虽然URL()
方法会去掉协议,但它仍会保留www
部分。在我的情况下,我也想要去掉子域名部分,因此不得不使用.replace()
方法。
u.host.replace(/^www./, '') // www.facebook.com => facebook.com
var txt="https://site.com";
txt=/^http(s)?:\/\/(.+)$/i.exec(txt);
txt=txt[2];
如果需要解析没有http/https的链接,请使用以下方法:
var txt="https://site.com";
txt=/^(http(s)?:\/\/)?(.+)$/i.exec(txt);
txt=txt[3];
txt=/(?:https?:\/\/)?(.*)$/i.exec(txt)[1];
不需要捕获http或https,使用*而不是+,以便仅包含 https?:// 的字符串将返回一个空字符串。 - some这个答案扩展了一些上面的答案,包括http://
、https://
、或者//
,这也是常见的。
感谢上面的答案让我找到了这个!
const urls = [ "http://example.com", "https://example.com", "//example.com" ]
// the regex below states: replace `//` or replace `//` and the 'stuff'
const resolveHostNames = urls.map(url => url.replace(/\/\/|.+\/\//, ''))
console.log(resolveHostNames);
var str = "https://site.com";
str = str.substr( str.indexOf(':') + 3 );
在这种情况下,你可以使用.slice()
或.substring()
代替.substr()
。它们都会产生相同的结果。
str = str.slice( str.indexOf(':') + 3 );
str = str.substring( str.indexOf(':') + 3 );
var str = "site.com";
var index = str.indexOf('://');
if( index > -1 )
str = str.substr( index + 3 );
从URL中去除协议:
var url = "https://site.com";
var urlNoProto = url.split('/').slice(2).join('/');
适用于任何协议,包括ftp、http、gopher、nntp、telnet、wais、file、prospero……所有在RFC 1738中指定的协议,除了没有“//”的协议(如mailto、news)。
url.replace(/(^(\w+:)?\/\//, '')
。/^\/\/|^https?:\/\//
(你可以进行优化)function removeProtocol(url) {
const a = document.createElement('a');
a.href = url;
// `url` may be relative, but `a.href` will be absolute.
return a.href.replace(a.protocol + '//', '');
}
removeProtocol('https://example.com/https://foo');
// 'example.com/https://foo'
removeProtocol('wrong://bad_example/u');
// 'bad_example/u'
来自MDN上的HTMLHyperlinkElementUtils:
a.hostname
,example.com
a.host
,example.com:3000
a.pathname
,/foo/bar.html
a.search
,?a=1&b=2
a.hash
,#goo
a.username
,a.password
,a.port
等。
//site.com
。 - Nick Craver