taking off the http or https off a javascript string

var txt="https://site.com";
txt=/^http(s)?:\/\/(.+)$/i.exec(txt);
txt=txt[2];

for parsing links without http/https use this:

var txt="https://site.com";
txt=/^(http(s)?:\/\/)?(.+)$/i.exec(txt);
txt=txt[3];

Try with this:

var url = "https://site.com";
var urlNoProtocol = url.replace(/^https?\:\/\//i, "");

You may use URL() constructor. It will parse your url string and there will be an entry w/o protocol. So less headache with regexps:

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

Although URL() drops out a protocol, it leaves you with www part. In my case I wanted to get rid of that subdomain part as well, so had to use to .replace() anyway.

u.host.replace(/^www./, '') // www.facebook.com => facebook.com

You can use the URL object like this:

const urlWithoutProtocol = new URL(url).host;

Tags:

Javascript