Javascript Regex替换文件名中的最后一个数字
我正在创建将文件名中的最后一个数字增加为1的功能 样本:Javascript Regex替换文件名中的最后一个数字,javascript,regex,Javascript,Regex,我正在创建将文件名中的最后一个数字增加为1的功能 样本: filename01.jpg => filename02.jpg file01name01.jpg => file01name02.jpg file01na01me.jpg => file01na02me.jpg 我正在努力解决原始文件名包含相同数字两次或更多次的情况。我只想增加文件名中的最后一个数字 我做了一些研究,但没有找到一个正确的正则表达式。也许有人能帮我 理想情况下,我希望我的代码如下所示:
filename01.jpg => filename02.jpg
file01name01.jpg => file01name02.jpg
file01na01me.jpg => file01na02me.jpg
我正在努力解决原始文件名包含相同数字两次或更多次的情况。我只想增加文件名中的最后一个数字
我做了一些研究,但没有找到一个正确的正则表达式。也许有人能帮我
理想情况下,我希望我的代码如下所示:
var filename = "somefilename";
var newFilename = filename.replace(regex,lastNumber + 1);
我不确定能不能这么容易做到。但在我继续之前,我需要弄清楚正则表达式
感谢pivmvb,以下是我的最终解决方案:
function getIncreasedFileName(fileName){
var newFileName = fileName.replace(/(\D+)(\d+)(\D+)$/,
function(str, m1, m2, m3) {
var newstr = (+m2 + 1) + "";
return m1 + new Array(m2.length+1 - newstr.length).join("0") + newstr + m3;
})
return newFileName;
}
其中:
\D+一个或多个非数字
\d+一个或多个数字
\D+一个或多个非数字
$end字符串(因此它只匹配最后的数字)
然后,在执行以下操作后,使用返回新字符串的函数替换匹配的字符串:
以下是我的想法:
var newFilename = filename.replace(/(\d+)(\D*$)/g ,
function(match, c1, c2) {
var nextNum = (+c1 + 1);
return (nextNum < 10 ? "0" + nextNum : nextNum) + c2;
});
var newFilename=filename.replace(/(\d+)(\d*$)/g,
功能(匹配,c1,c2){
var nextNum=(+c1+1);
返回(nextNum<10?“0”+nextNum:nextNum)+c2;
});
请注意,我使用了
\D*
来匹配最后一个数字和字符串结尾之间的零个或多个非数字,因此将“filename.01”更改为“filename.02”,而“name01”更改为“name02”。如果您只想匹配数字后面有其他字符的地方,只需将*
更改为+
,以匹配末尾的一个或多个非数字。您可以首先找到最后的数字,增加它们,然后执行替换操作:
m = filename.match(/([0-9][0-9])([^0-9]*)$/);
incr = parseInt(m[1]) +1;
newFilename = filename.replace(/([0-9][0-9])([^0-9]*)$/, incr + "$2");
如果数字低于零,则不会添加填充0。我会告诉你的。如果现有文件名是
filename99.jpg
?filename.match(/(\d+[^\d]+$/)[1],是否要用前导零号格式将两位数打断?
m = filename.match(/([0-9][0-9])([^0-9]*)$/);
incr = parseInt(m[1]) +1;
newFilename = filename.replace(/([0-9][0-9])([^0-9]*)$/, incr + "$2");