我正在尝试替换以进行字符串替换。我想替换上一个/
和.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
,我希望它会删除数字和字母 - 但似乎并非如此。
答案 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"