jquery正则表达式替换2个分隔符

时间:2016-03-22 17:22:13

标签: javascript jquery regex

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

我正在使用这段代码,但无法让它工作(正则表达式不是我的强项)。

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

小提琴https://jsfiddle.net/hkhfk531/

1 个答案:

答案 0 :(得分:1)

您可以使用:

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

[^\/]+匹配在捕获组中捕获的/之前不是.gif的任何字符中的一个或多个。

这是一个基于先行的解决方案,以避免捕获组:

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