2010-12-28 10 views
6

Ho bisogno di ottenere il nome del file dall'indirizzo URL.Ottieni il nome file dall'URL utilizzando le espressioni regolari o Javascript

Ecco i criteri:

Ha bisogno di tornare stringa vuota "" in seguenti scenari:

http://somedomain.com 
http://www.somedomain.com 
http://somedomain.com/ 
http://www.somedomain.com/ 

E ritorno filename.php nei seguenti scenari:

http://somedomain.com/filename.php?query 
http://www.somedomain.com/filename.php?query 
http://somedomain.com/filename.php#query 
http://www.somedomain.com/filename.php#query 

ho trovato questa espressione regolare

[\w_.-]*?(?=[\?\#])|[\w_.-]*$ da here

tuttavia restituisce somedomain.com sull'input http://somedomain.com. Non riesco a capire come modificarlo per ignorare il dominio quando non c'è / alla fine di esso.

Se è difficile fare con le espressioni regolari, apprezzerò anche una soluzione JavaScript.

Grazie in anticipo.

risposta

21

Supponendo che si stia scrivendo uno script in un browser, è già disponibile un parser di URL completo che consente di trarre vantaggio da, senza dover scrivere un'eserzia incompleta inaffidabile. Utilizzare un HTMLAnchorElement per leggere le location -come proprietà host, pathname, search, hash ecc .:

var a= document.createElement('a'); 
a.href= 'http://somedomain.com/dirname/filename.php?query'; 
var filename= a.pathname.split('/').pop(); // filename.php 
+0

grazie. Non conoscevo le proprietà pathname, etc – miki725

0

Utilizzare questo ottimizzato versione del Reg es: (aggiunto \/a quello esistente)

[\w_.-]*?(?=[\/\?\#])|[\w_.-]*$