Estoy tratando de encontrar un método relativamente fácil y confiable para extraer la URL base de una variable de cadena usando JavaScript (o jQuery).
Por ejemplo, dado algo como:
http://www.sitename.com/article/2009/09/14/this-is-an-article/
Me gustaría obtener:
http://www.sitename.com/
¿Es una expresión regular la mejor apuesta? Si es así, ¿qué enunciado podría usar para asignar la URL base extraída de una cadena dada a una nueva variable?
He buscado un poco sobre esto, pero todo lo que encuentro en el mundo de JavaScript parece girar en torno a la recopilación de esta información de la URL del documento real usando location.host o similar.
javascript
regex
string
url
Estropear
fuente
fuente
Respuestas:
Editar: Algunos se quejan de que no tiene en cuenta el protocolo. Así que decidí actualizar el código, ya que está marcado como respuesta. Para aquellos a los que les gusta el código de una línea ... bueno, lamento por eso que usamos minimizadores de código, el código debería ser legible por humanos y de esta manera es mejor ... en mi opinión.
O use la solución Davids desde abajo.
fuente
url = 'sitename.com/article/2009/09/14/this-is-an-article'; newurl = 'http://' + url.split('/')[0];
//now url === "http:://stackoverflow.com"
pago::
Los navegadores basados en WebKit, Firefox a partir de la versión 21 y las versiones actuales de Internet Explorer (IE 10 y 11) implementan
location.origin
.location.origin
incluye el protocolo , el dominio y opcionalmente el puerto de la URL.Por ejemplo,
location.origin
de la URLhttp://www.sitename.com/article/2009/09/14/this-is-an-article/
eshttp://www.sitename.com
.Para apuntar a navegadores sin soporte para
location.origin
usar el siguiente polyfill conciso:fuente
window.location.hostname
perderá el número de puerto si se proporciona, así que úselowindow.location.host
. Entonces, el 'nombre base' completo, incluida la barra inclinada final sería:window.location.protocol+"//"+window.location.host + "/";
No es necesario usar jQuery, solo use
fuente
No hay razón para hacer divisiones para obtener la ruta, el nombre de host, etc. de una cadena que es un enlace. Solo necesitas usar un enlace
Puede hacerlo fácilmente con jQuery agregando el elemento y leyendo su atributo.
fuente
fuente
Luego :
Para su solicitud, necesita:
Revisión 07-2017: también puede ser más elegante y tiene más características
Luego
¡Frio!
fuente
Si está utilizando jQuery, esta es una forma genial de manipular elementos en JavaScript sin agregarlos al DOM:
fuente
myAnchor.prop('hostname')
. Supongo que jQuery ha cambiado en los últimos 5 años ... ¡Gracias por la respuesta!Un enfoque ligero pero completo para obtener valores básicos de una representación de cadena de una URL es la regla de expresión regular de Douglas Crockford:
Si está buscando un kit de herramientas de manipulación de URL más potente, pruebe URI.js. Es compatible con getters, setter, normalización de URL, etc., todo con una buena API encadenable.
Si está buscando un complemento jQuery, jquery.url.js debería ayudarlo
Una forma más sencilla de hacerlo es mediante el uso de un elemento de anclaje, como sugirió @epascarello. Esto tiene la desventaja de que tiene que crear un elemento DOM. Sin embargo, esto se puede almacenar en caché en un cierre y reutilizar para múltiples URL:
Úselo así:
fuente
Bueno, el objeto URL API evita dividir y construir las URL manualmente.
fuente
Si está extrayendo información de window.location.href (la barra de direcciones), use este código para obtener
http://www.sitename.com/
:Si tiene una cadena,
str
esa es una URL arbitraria (no window.location.href), entonces use expresiones regulares:Yo, como todos en el Universo, odio leer expresiones regulares, así que lo desglosaré en inglés:
No es necesario crear elementos DOM ni hacer nada loco.
fuente
Utilizo una expresión regular simple que extrae el host de la url:
y úsalo así
Nota, si el
url
no termina con un/
elhost
no va a terminar en una/
.Aquí hay algunas pruebas:
fuente
Puede usar los siguientes códigos para obtener diferentes parámetros de la URL actual
fuente
Entonces puedes usarlo así ...
El valor de url será ...
La "var url" también contiene dos métodos.
En este caso, el valor de paramQ será 1.
El valor de allParameters serán solo los nombres de los parámetros.
Probado en IE, Chrome y Firefox.
fuente
En lugar de tener que tener en cuenta window.location.protocol y window.location.origin, y posiblemente perder un número de puerto específico, etc., simplemente tome todo hasta el 3er "/":
fuente
Esto funciona:
fuente
location.pathname = '/'
Puedes hacerlo usando una expresión regular:
encaja ?
fuente
Para obtener el origen de cualquier URL, incluidas las rutas dentro de un sitio web (
/my/path
) o sin esquema (//example.com/my/path
), o completo (http://example.com/my/path
) , armé una función rápida.En el fragmento a continuación, las tres llamadas deben registrarse
https://stacksnippets.net
.fuente
Esto funciona para mí:
fuente
window.location.href proporciona la dirección URL actual de la barra de direcciones del navegador
puede ser algo como https://stackoverflow.com/abc/xyz o https://www.google.com/search?q=abc tilllastbackslashregex.exec () ejecute regex y vuelva a ejecutar la cadena coincidente hasta la última barra invertida, es decir, https : //stackoverflow.com/abc/ o https://www.google.com/ respectivamente
fuente
Una buena manera es usar el
URL
objeto de API nativa de JavaScript . Esto proporciona muchas partes útiles de url.Por ejemplo:
Como puede ver aquí, puede acceder a lo que necesite.
Por ejemplo:
console.log(urlObject.host); // "stackoverflow.com"
doc para URL
fuente