2016-03-22 2 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 внутри моего регулярных выражений шаблона, я надеялся, что это будет удалить цифры и буквы - но это не так в этом случае.

Fiddle 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, первый вариант работал для меня –

Смежные вопросы