2012-02-29 4 views
7

私はいくつかのURLを持っており、私はURLの最後の部分をキャッチしたいと思います。URLの最後の部分をJavaScriptで照合する正規表現

私のURLが

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 

の形態であり、私がキャッチしたいことは/Tulips.......jpg

私はそれを試してみるですが、運と

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

もっと良いアイデアはありますか?

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

が、私は優れたお勧めしますuri.js http://medialize.github.com/URI.js –

答えて

24

lastIndexOf方法を見てみましょう。
.*は貪欲な正規表現ですので、の最後ののスラッシュまで一致します。その後グループに1が

+0

これは上記のすべてより優れています。 – shift66

+0

は、urlにパラメータがある場合、この解決策は機能しません。すなわち:www.something.com/image.jpg?size=100x100(upvotedはまだこの問題の良い解決策であるため) – tbraun

+0

詳細を扱う素敵なライブラリについてはhttp://stackoverflow.com/a/11664379/232175を参照してください複雑なURI(URI.js)。 – Matthias

1

.*/(.*)このパターンを使用して、グループ1.itは私が推測するに動作します取得:

+0

私は@ winSharp93の答えは最高だと思います。 – shift66

8

は、次の正規表現は動作します(必要なもの)の最後の文字が次のようになります。

/[^\/]+$/ 
+0

これはクエリ文字列も取得します。 – Brad

3

使用この正規表現: -

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

$6を使用してファイル名を取得します。

1

すべての画像がjpgであることが確かであれば:

そうでなければ

、よりジェネラル:

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

です:あなたはULR操作の多くを持っていて、読みやすくするためにあなたのコードを希望した場合

. 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 
関連する問題