Javascript jquery正则表达式在2个分隔符之间替换

Javascript jquery正则表达式在2个分隔符之间替换,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试替换以执行字符串替换。我想替换最后一个/和.gif之间的所有内容 我正在玩这段代码,但无法让它工作(regex不是我的强项) 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/fo

我正在尝试替换以执行字符串替换。我想替换最后一个
/
.gif
之间的所有内容

我正在玩这段代码,但无法让它工作(regex不是我的强项)

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
,我希望它能删除数字和字母,但事实似乎并非如此

小提琴

您可以使用:

str = str.replace(/[^\/]+(\.gif)$/i, newFileName + '$1')
//=> "/foo/folder1/folder2/newImg.gif"
[^\/]+
匹配捕获组中捕获的
/
之前的
.gif
以外的任何字符中的一个或多个

以下是一个基于前瞻性的解决方案,可避免捕获组:

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