2012-02-29 41 views
7

Tôi có một số URL và tôi muốn nắm bắt phần cuối cùng của url.Regex để khớp với URL phần cuối cùng với JavaScript

URL của tôi là theo hình thức

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 

và những gì tôi muốn bắt là /Tulips.......jpg

Tôi có cố gắng đó, nhưng không có may mắn

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

Bạn có ý tưởng nào tốt hơn không?

+1

Nếu bạn phải rất nhiều ULR thao tác và bạn muốn mã của bạn để có thể đọc nhiều hơn, tôi khuyên bạn nên tuyệt vời uri.js http://medialize.github.com/URI.js –

Trả lời

24

Hãy xem phương pháp lastIndexOf:

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

Điều này tốt hơn tất cả ở trên. – shift66

+0

hướng lên, giải pháp này không hoạt động nếu url có thông số. ví dụ: www.something.com/image.jpg?size=100x100 (được thăng hạng vì nó vẫn là một giải pháp tốt cho câu hỏi này) – tbraun

+0

Xem http://stackoverflow.com/a/11664379/232175 để có một thư viện tuyệt vời xử lý nhiều hơn URI phức tạp (URI.js). – Matthias

1

.*/(.*) sử dụng mô hình này và nhận được 1.it nhóm sẽ làm việc tôi đoán.
.* là regex tham lam nên nó sẽ khớp cho đến khi số cuối cùng dấu gạch chéo. Sau đó trong nhóm 1 sẽ là ký tự cuối cùng (những gì bạn cần)

+0

Tôi nghĩ câu trả lời của winSharp93 là tốt nhất. – shift66

8

Các biểu thức chính quy sau đây sẽ làm việc:

/[^\/]+$/ 
+0

Điều này cũng chọn chuỗi truy vấn. – Brad

3

Sử dụng Regex này: -

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

Nhận tên file sử dụng $6

1

Nếu bạn chắc chắn rằng tất cả những hình ảnh jpg:

/.\/\S+\.jpg/ 

Nếu không, nhiều Generale:

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

Đó là:

. 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 
Các vấn đề liên quan