Ultimo segmento di URL

Come ottengo l’ultimo segmento di un URL? Ho il seguente script che mostra l’url completo del tag di ancoraggio cliccato:

$(".tag_name_goes_here").live('click', function(event) { event.preventDefault(); alert($(this).attr("href")); }); 

Se l’url è

 http://mywebsite/folder/file 

come faccio a visualizzare solo la parte “file” dell’URL nella finestra di avviso?

È inoltre ansible utilizzare la funzione lastIndexOf () per individuare l’ultima occorrenza del carattere / nel proprio URL, quindi la funzione substr () per restituire la sottostringa a partire da tale posizione:

 window.alert(this.href.substr(this.href.lastIndexOf('/') + 1)); 

In tal modo, eviterai di creare un array contenente tutti i segmenti dell’URL, come fa split() .

 var parts = 'http://mywebsite/folder/file'.split('/'); var lastSegment = parts.pop() || parts.pop(); // handle potential trailing slash console.log(lastSegment); 

Solo un’altra soluzione con regex.

 var href = location.href; console.log(href.match(/([^\/]*)\/*$/)[1]); 
 window.location.pathname.split("/").pop() 

Javascript ha la funzione split associata all’object stringa che può aiutarti:

 var url = "http://mywebsite/folder/file"; var array = url.split('/'); var lastsegment = array[array.length-1]; 

O potresti usare un’espressione regolare:

 alert(href.replace(/.*\//, '')); 
 var urlChunks = 'mywebsite/folder/file'.split('/'); alert(urlChunks[urlChunks.length - 1]); 

Lo so, è troppo tardi, ma per gli altri: consiglio vivamente l’ uso del plugin jQuery PURL . La motivazione per PURL è che l’url può essere segmentato anche con ‘#’ (esempio: link angular.js), ad esempio l’url potrebbe essere simile a

  http://test.com/#/about/us/ 

o

  http://test.com/#sky=blue&grass=green 

E con PURL puoi decidere facilmente (segmento / fsegment) quale segmento vuoi ottenere.

Per l’ultimo segmento “classico” potresti scrivere:

  var url = $.url('http://test.com/dir/index.html?key=value'); var lastSegment = url.segment().pop(); // index.html 

Basandosi sulla risposta di Frédéric utilizzando solo javascript:

 var url = document.URL window.alert(url.substr(url.lastIndexOf('/') + 1)); 

Anche,

 var url = $(this).attr("href"); var part = url.substring(url.lastIndexOf('/') + 1); 

Se non sei preoccupato di generare gli elementi extra usando lo split, allora il filtro potrebbe gestire il problema che hai citato della barra finale (supponendo che tu abbia il supporto del browser per il filtro).

 url.split('/').filter(function (s) { return !!s }).pop() 
 // Store original location in loc like: http://test.com/one/ (ending slash) var loc = location.href; // If the last char is a slash trim it, otherwise return the original loc loc = loc.lastIndexOf('/') == (loc.length -1) ? loc.substr(0,loc.length-1) : loc.substr(0,loc.lastIndexOf('/')); var targetValue = loc.substr(loc.lastIndexOf('/') + 1); 

targetValue = uno

Se il tuo URL è simile a:

http://test.com/one/

o

http://test.com/one

o

http://test.com/one/index.htm

Quindi loc si presenta come: http://test.com/one

Ora, dal momento che si desidera l’ultimo elemento, eseguire il passaggio successivo per caricare il valore (targetValue) originariamente desiderato.

 var targetValue = loc.substr(loc.lastIndexOf('/') + 1); 
 window.alert(this.pathname.substr(this.pathname.lastIndexOf('/') + 1)); 

Usa la proprietà pathname nativa perché è la più semplice ed è già stata analizzata e risolta dal browser. $(this).attr("href") può restituire valori come ../.. che non darebbero il risultato corretto.

Se hai bisogno di mantenere la search e l’ hash (es. foo?bar#baz da http://quux.com/path/to/foo?bar#baz ) usa questo:

 window.alert(this.pathname.substr(this.pathname.lastIndexOf('/') + 1) + this.search + this.hash); 
 var pathname = window.location.pathname; // Returns path only var url = window.location.href; // Returns full URL 

Copiato da questa risposta

Per ottenere l’ultimo segmento della tua finestra corrente:

window.location.href.substr(window.location.href.lastIndexOf('/') +1)

Aggiornamento della risposta di raddevus:

 var loc = window.location.href; loc = loc.lastIndexOf('/') == loc.length - 1 ? loc.substr(0, loc.length - 1) : loc.substr(0, loc.length + 1); var targetValue = loc.substr(loc.lastIndexOf('/') + 1); 

Stampa l’ultimo percorso dell’URL come stringa:

 test.com/path-name = path-name test.com/path-name/ = path-name 

Credo che sia più sicuro rimuovere la barra della coda (‘/’) prima di eseguire la sottostringa. Perché ho ottenuto una stringa vuota nel mio scenario.

 window.alert((window.location.pathname).replace(/\/$/, "").substr((window.location.pathname.replace(/\/$/, "")).lastIndexOf('/') + 1)); 

Sto usando regex e split:

var last_path = location.href.match (/. / (. [\ w]) /) [1] .split (“#”) [0] .split (“?”) [0]

Alla fine ignorerà #? & / termina urls, che accade molto. Esempio:

https://cardsrealm.com/profile/cardsRealm -> Returns cardsRealm

https://cardsrealm.com/profile/cardsRealm#hello -> Restituisce cardsRealm

https://cardsrealm.com/profile/cardsRealm?hello -> Restituisce cardsRealm

https://cardsrealm.com/profile/cardsRealm/ -> Returns cardsRealm

puoi rimuovere prima se c’è / alla fine e poi ottenere l’ultima parte dell’URL

 let locationLastPart = window.location.pathname if (locationLastPart.substring(locationLastPart.length-1) == "/") { locationLastPart = locationLastPart.substring(0, locationLastPart.length-1); } locationLastPart = locationLastPart.substr(locationLastPart.lastIndexOf('/') + 1); 

Le risposte sopra potrebbero funzionare se il percorso è semplice, consistendo solo di semplici elementi di percorso. Ma quando contiene parametri di query, si rompono.

Meglio usare l’object URL per questo invece di ottenere una soluzione più robusta. È un’interpretazione analizzata dell’URL attuale:

Input: const href = 'https://stackoverflow.com/boo?q=foo&s=bar'

 const last = new URL(href).pathname.split('/').pop(); console.log(last); 

Uscita: 'boo'

Questo sembra un po ‘più pulito:

 var url = 'http://mywebsite/folder/file'; var lastSegment = url.split('/').slice(-1).join(); console.log(lastSegment); 

Non so davvero se la regex è il modo giusto per risolvere questo problema poiché può davvero influire sull’efficienza del tuo codice, ma la regex riportata di seguito ti aiuterà a recuperare l’ultimo segmento e ti darà comunque l’ultimo segmento anche se l’URL è seguito da un vuoto / . La regex che mi è venuta in mente è:

 [^\/]+[\/]?$