He las siguientes cadenasdespegar el protocolo HTTP o HTTPS de una cadena JavaScript
http://example.com
https://example.com
http://www.example.com
cómo me deshago de la http://
o https://
?
He las siguientes cadenasdespegar el protocolo HTTP o HTTPS de una cadena JavaScript
http://example.com
https://example.com
http://www.example.com
cómo me deshago de la http://
o https://
?
Pruebe con esto:
var url = "https://site.com";
var urlNoProtocol = url.replace(/^https?\:\/\//i, "");
"http" olvidado – Bick
Funciona tanto con http como con https. El carácter "s" es opcional. – ncardeli
Me gusta mucho lo limpio que es este código. No veo por qué es necesaria su segunda expresión regular ... La primera elimina el protocolo http/https si está presente. Si no está presente, no hay nada que reemplazar y la cadena se devuelve tal como está. – some
var txt="https://site.com";
txt=/^http(s)?:\/\/(.+)$/i.exec(txt);
txt=txt[2];
para los enlaces de análisis sin HTTP/HTTPS usar esto:
var txt="https://site.com";
txt=/^(http(s)?:\/\/)?(.+)$/i.exec(txt);
txt=txt[3];
var str = "https://site.com";
str = str.substr(str.indexOf(':') + 3);
En lugar de .substr()
, también se puede utilizar .slice()
o .substring()
. Todos producirán el mismo resultado en esta situación.
str = str.slice(str.indexOf(':') + 3);
str = str.substring(str.indexOf(':') + 3);
EDIT: Parece como si los requisitos de la cuestión han cambiado en un comentario debajo de otra respuesta.
Si hay posiblemente no es un http://
en la cadena, a continuación, hacer esto:
var str = "site.com";
var index = str.indexOf('://');
if(index > -1)
str = str.substr(index + 3);
Creo que tienes el idioma equivocado allí: P –
Me gusta este, muy simple, y no hay necesidad de una expresión regular. @Jacob me parece un javascript perfectamente válido? –
convertirá "site.com" en "te.com" ... idx = str.indexOf (':') if (idx> = 0) { str = str.substr (idx + 3); } –
el protocolo de Gaza desde una URL:
var url = "https://site.com";
var urlNoProto = url.split('/').slice(2).join('/');
Funciona con cualquier protocolo, ftp, http, gopher, nntp, telnet, wais, file, prospero ... todos los especificados en RFC 1738 con la excepción de aquellos sin un // en ellos (mailto, noticias).
Suponiendo que no haya dos barras que no sean el protocolo, que podría hacer:
var url = "https://example.com";
var noProtocol = url.split('//')[1];
Usted puede utilizar HTMLHyperlinkElementUtils de DOM:
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'
De HTMLHyperlinkElementUtils on MDN:
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
, etc.
Tenga en cuenta que en la web real p edades protocolo heredado//
es una práctica común https://paulirish.com/2010/the-protocol-relative-url.
por lo que sugiero expresión regular que cubre este caso así:
/^\/\/|^https?:\/\//
(se puede optimizarlo)
Javascript uso de la función de división también dervies la solución. Awesome !!!
var url = "https://example.com";
url = url.split("://")[1]; // for https use url..split("://")[0];
console.log(url);
Puede usar URL() constructor. Analizará su cadena de url y habrá una entrada sin protocolo. Por lo menos dolor de cabeza con las expresiones regulares:
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
Aunque URL()
gotas a cabo un protocolo, que te deja con www
parte. En mi caso, quería deshacerme de esa parte del subdominio también, así que tuve que usarla de todas formas para .replace()
.
u.host.replace(/^www./, '') // www.facebook.com => facebook.com
Esta respuesta se extiende algunas respuestas anteriores, http://
, https://
, o//
que también es común.
Gracias por las respuestas anteriores que me llevaron a esto!
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);
Aquí hay un link to a codepen.
Puede que no sea así, pero si su intención es vincularse al mismo esquema que la ubicación actual, puede hacer '// site.com'. –