2016-03-22 18 views
1

Bir dize yerine geçmek için değiştirmeye çalışıyorum. Son / ve .gif arasındaki her şeyi değiştirmek istiyorum.jquery regex 2 sınırlayıcı arasında değiştir

Bu kod parçacığıyla oynuyorum ancak işe yaratamam (normal ifadelerim sabit değil).

jQuery

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

benim düzenli ifade deseni içinde d ve | ve a-z kullanarak Çıktı

/foo/folder1/folder2newImg23img.gif 

İstenilen çıkış

/foo/folder1/folder2/newImg.gif 

, ben rakam ve harfleri kaldırmak umuyordum - ama bu bir şey değil emir olmak için.

kullanabilirsiniz https://jsfiddle.net/hkhfk531/

cevap

1

Fiddle:

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

[^\/]+ maçlar 1 veya yakalama grubunda yakalanır hangi değil /.gif önce herhangi char fazlası. İşte

grup yakalama önlemek için bir lookahead tabanlı bir çözümdür:

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

Teşekkür @anubhava, ilk seçenek benim için çalıştı –