2016-03-22 15 views
1

文字列置換を行うために置き換えようとしています。最後の/.gifの間にあるものすべてを置き換えたいと思います。jquery regexは2つのデリミタの間を置き換えます

私はこのコードスニペットで遊んでいますが、動作させることができません(正規表現は私の強みではありません)。

jQueryの

var str = '/foo/folder1/folder2/123img.gif'; 
var newFileName = 'newImg'; 
var replaced = str.replace(/\/\d|a-z+-.gif/, newFileName); 
$('p').text(replaced); 

出力

/foo/folder1/folder2newImg23img.gif 

所望の出力

/foo/folder1/folder2/newImg.gif 

私の正規表現パターン内d|a-zを使用することで、私はそれが数字と文字を削除するだろう期待していました - しかし、それはseではありませんそれが事実です。

フィドルを使用できhttps://jsfiddle.net/hkhfk531/

答えて

1

str = str.replace(/[^\/]+(\.gif)$/i, newFileName + '$1') 
//=> "/foo/folder1/folder2/newImg.gif" 

[^\/]+マッチ1またはキャプチャグループに取り込まれ.gif/ではない任意の文字のより。ここで

はグループをキャプチャ回避するための先読みベースのソリューションです:

str = str.replace(/[^\/]+(?=\.gif$)/i, newFileName) 
//=> "/foo/folder1/folder2/newImg.gif" 
+1

おかげで@anubhava、最初のオプションは、私のために働きました –

関連する問題