2012-02-29 29 views
7

Tengo algunas URL y me gusta atrapar la parte final de la url.Regex para que coincida con la última parte de la URL con JavaScript

Mis URLs están en la forma de

http://www.my-site.dch/wp-content/uploads/2012/02/Tulips.jpg 
http://www.my-site.dch/wp-content/uploads/2012/02/Tulips-150x200.jpg 
http://www.my-site.dch/wp-content/uploads/2012/02/Tulips-500x350.jpg 

y lo que me gusta coger es el /Tulips.......jpg

tengo que tratar, pero sin suerte

\/.*(-\d+x\d+)\.(jp(e)?g|png|gif) 

¿Alguna idea mejor?

+1

Si tiene que mucha manipulación ULR y desea que su código sea más legible, recomiendo el excelente uri.js http://medialize.github.com/URI.js –

Respuesta

24

Tome una mirada en el método lastIndexOf:

var index = url.lastIndexOf("/"); 
var fileName = url.substr(index) 
+0

Esto es mejor que todo lo anterior. – shift66

+0

cara a cara, esta solución no funciona si url tiene parámetros. es decir: www.something.com/image.jpg?size=100x100 (upvoted porque sigue siendo una buena solución para esta pregunta) – tbraun

+0

Consulte http://stackoverflow.com/a/11664379/232175 para obtener una biblioteca que maneja más URIs complejos (URI.js). – Matthias

1

.*/(.*) uso de este patrón y obtener el 1.it grupo trabajará supongo.
.* es una expresión regular codiciosa por lo que coincidirá hasta el última barra. Después de que en el grupo 1 serán los últimos caracteres (lo que necesita)

+0

Creo que la respuesta de @ winSharp93 es la mejor. – shift66

8

La siguiente expresión regular funcionará:

/[^\/]+$/ 
+0

Esto también recupera la cadena de consulta. – Brad

3

Utilice esta expresión regular: -

^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$ 

obtener el nombre de archivo usando $6

1

Si está seguro de que todas las imágenes son jpg:

/.\/\S+\.jpg/ 

De lo contrario, más generale:

/.\/\S+\.\w{2,3}/ 

Es decir:

. any char 
\/ the slash before the file name 
\S+ any non blank char to match the file name (at least one) 
\. the file extension separator 
jpg or \w{3,4} the file extension 
Cuestiones relacionadas