2010-12-28 9 views
6

Necesito obtener el nombre de archivo de la dirección URL.Obtener el nombre de archivo de la URL utilizando expresiones regulares o Javascript

Aquí es el criterio:

Se necesita volver cadena vacía en "" siguientes escenarios:

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

Y volver filename.php en los siguientes escenarios:

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 

encontré esta expresión regular

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

sin embargo, devuelve somedomain.com en la entrada http://somedomain.com. No puedo encontrar la manera de modificarlo para ignorar el dominio cuando no hay / al final.

Si es difícil de hacer con expresiones regulares, agradeceré una solución de JavaScript también.

Gracias por adelantado.

Respuesta

21

Suponiendo que está escribiendo script en un navegador, ya hay un analizador de URL con todas las funciones para que pueda aprovechar, sin tener que escribir regexen incompleto no confiable. Utilice un HTMLAnchorElement para leer las propiedades location -como host, pathname, search, etc .: hash

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

gracias. No sabía sobre propiedades de nombre de ruta, etc. – miki725

0

Utilice esta ajustado versión de la ex reg: (añadido \/a la ya existente)

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