¿Cómo obtengo el último segmento de una URL? Tengo el siguiente script que muestra la URL completa de la etiqueta de anclaje en la que se hizo clic:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Si la url es
http://mywebsite/folder/file
¿Cómo hago para que muestre la parte "archivo" de la URL en el cuadro de alerta?
javascript
jquery
oshirowanen
fuente
fuente
Respuestas:
También puede usar la función lastIndexOf () para localizar la última aparición del
/
carácter en su URL, luego la función substring () para devolver la subcadena a partir de esa ubicación:De esa manera, evitará crear una matriz que contenga todos sus segmentos de URL, como lo
split()
hace.fuente
admin/store/tour/-1/
así, ¿será una''
cadena?/
al final?/
al final:var url = window.location.href.replace(/\/$/, ''); /* remove optional end / */ var lastSeg = url.substr(url.lastIndexOf('/') + 1);
fuente
http://mywebsite/folder/file/
"" == false
en ese caso, muestra la parte de la matriz con la cadena vacíafuente
/
.console.log(history.location.pathname.split("/").pop())
¡Si hay una mejor manera me gustaría saber! Esperemos que este comentario pueda llevar a más personas a su respuesta. Gracias @ Dblock247.../file?var=value&foo=bar
). Esta solución resuelve este problema de una manera más robusta y moderna: stackoverflow.com/a/51795122/1123743Solo otra solución con regex.
fuente
Javascript tiene la función de división asociada al objeto de cadena que puede ayudarte:
fuente
Las otras respuestas pueden funcionar si la ruta es simple, y consiste solo en elementos de ruta simples. Pero cuando también contiene parámetros de consulta, se rompen.
Mejor use el objeto URL para esto en su lugar para obtener una solución más robusta. Es una interpretación analizada de la URL actual:
Entrada:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
Salida:
'boo'
Esto funciona para todos los navegadores comunes. Solo nuestro IE moribundo no lo admite (y no lo hará). Sin embargo, para IE hay un polyfills disponible (si te importa ).
fuente
O podrías usar una expresión regular:
fuente
alert(window.location.href.replace(/\/$/, '').replace(/.*//, ''))
fuente
Lo sé, es demasiado tarde, pero para otros: I altamente uso recomendado PURL plugin de jQuery . La motivación para PURL es que la URL también puede segmentarse con '#' (ejemplo: enlaces angular.js), es decir, la URL podría verse así
o
Y con PURL puede decidir fácilmente (segmento / segmento) qué segmento desea obtener.
Para el último segmento "clásico" podría escribir:
fuente
Basándose en la respuesta de Frédéric usando solo javascript:
fuente
También,
fuente
Si no le preocupa generar los elementos adicionales utilizando la división, entonces el filtro podría manejar el problema que menciona de la barra inclinada final (suponiendo que tenga compatibilidad con el navegador para el filtro).
fuente
targetValue = one
Si su URL se ve así:
o
o
Entonces loc termina luciendo así: http://test.com/one
Ahora, dado que desea el último elemento, ejecute el siguiente paso para cargar el valor (targetValue) que deseaba originalmente.
fuente
search
ohash
.Use la
pathname
propiedad nativa porque es más simple y ya ha sido analizada y resuelta por el navegador.$(this).attr("href")
puede devolver valores como los../..
que no le darían el resultado correcto.Si necesita mantener el
search
yhash
(por ejemplo,foo?bar#baz
dehttp://quux.com/path/to/foo?bar#baz
) use esto:fuente
pathname
parámetros de consulta, perohref
no lo hace.Para obtener el último segmento de su ventana actual:
window.location.href.substr(window.location.href.lastIndexOf('/') +1)
fuente
primero puede eliminar si hay / al final y luego obtener la última parte de la URL
fuente
Devuelve el último segmento, independientemente de las barras inclinadas:
fuente
path.sep
una barra diagonal. Ver nodejs.org/api/path.html#path_path_sep . Esto mantendrá su código portátil en todos los sistemas operativos.Copiado de esta respuesta
fuente
Respuesta actualizada de raddevus:
Imprime la última ruta de url como cadena:
fuente
Creo que es más seguro eliminar la barra diagonal ('/') antes de hacer la subcadena. Porque tengo una cadena vacía en mi escenario.
fuente
Estoy usando regex y split:
var last_path = location.href.match (/. / (. [\ w]) /) [1] .split ("#") [0] .split ("?") [0]
Al final ignorará #? & / URL de finalización, que sucede mucho. Ejemplo:
https://cardsrealm.com/profile/cardsRealm -> Devoluciones cardsRealm
https://cardsrealm.com/profile/cardsRealm#hello -> Devuelve tarjetasRealm
https://cardsrealm.com/profile/cardsRealm?hello -> Devuelve tarjetasRealm
https://cardsrealm.com/profile/cardsRealm/ -> Devoluciones cardsRealm
fuente
Realmente no sé si la expresión regular es la forma correcta de resolver este problema, ya que realmente puede afectar la eficiencia de su código, pero la expresión regular a continuación lo ayudará a obtener el último segmento y aún le dará el último segmento incluso si la URL es seguido por un vacio
/
. La expresión regular que se me ocurrió es:fuente
Funciona para mi.
fuente
Sé que es antiguo, pero si desea obtener esto de una URL, simplemente puede usar:
document.location.pathname
obtiene el nombre de ruta de la URL actual.lastIndexOf
obtener el índice de la última aparición de la siguiente expresión regular, en nuestro caso es/.
. El punto significa cualquier carácter, por lo tanto, no contará si/
es el último carácter en la URL.substring
cortará la cadena entre dos índices.fuente
si la url es
http://localhost/madukaonline/shop.php?shop=79
console.log(location.search);
traerá?shop=79
así que la forma más sencilla es usar location.search
puedes buscar más información aquí y aquí
fuente
Puede hacer esto con rutas de consulta simples (w / 0), etc.
Concedido probablemente demasiado complejo y probablemente no eficiente, pero quería usarlo
reduce
por diversión.fuente