2016-04-07 2 views
1

Я хотел бы заменить номер, который появляется непосредственно перед расширением файла. Мой пример, к сожалению, заменит все числа. Есть ли способ сделать это, не разбивая строку на /, а затем разбивая ее снова на ..заменить номер перед расширением файла

// var txt = 'myImage123.gif'; // works ok 
// var txt = 'folder1/folder2/123/myImage123.gif'; // replaces numbers out of scope 
var txt = 'folder1/folder2/123/my123Image123.gif'; // replaces numbers out of scope 
txt = txt.replace(/\d+/,'999'); 

$('h3').text(txt); 

Demo http://jsfiddle.net/6mBeQ/244/

ответ

1

Использование positive lookahead assertion.

txt = txt.replace(/\d+(?=\.gif$)/m,'999'); 

Это должно соответствовать один или несколько цифр символов, который существует только до до последнего .gif и затем заменить эти совпавшие символы с 999

или

txt = txt.replace(/\d+(?=\.\w+$)/m,'999'); 
+0

скрипку http://jsfiddle.net/Avinash3105/6mBeQ/245/ –

+0

Отлично, спасибо. Не знаю, кто это проголосовал. Я соглашусь, когда будет разрешено. –

+0

Это не удается, если используется на фоне кода css - любая причина для этого? demo http://jsfiddle.net/6mBeQ/247/ –

0

Другой метод без использования lookaround или capturing groups будет прямой заменой.

Regex:\d+\.gif

Замена сделать: Заменить с вашим номером (например 999) + .gif. Это будет 999.gif.

Код:txt = txt.replace(/\d+\.gif/,'999.gif');

Regex101 Demo

JS Fiddle

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