gpt4 book ai didi

javascript - 正则表达式替换文件名中的最后一个数字

转载 作者:行者123 更新时间:2023-11-30 13:27:14 28 4
gpt4 key购买 nike

我正在创建将文件名中的最后一个数字增加 1 的功能。

示例:

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;
}

最佳答案

"test01.jpg".replace(/(\D+)(\d+)(\D+)$/, function(str, m1, m2, m3) {
var newstr = (+m2 + 1) + "";
return m1 + new Array(3 - newstr.length).join("0") + newstr + m3;
// m1 === "test"
//
// m2 === "01"
// So:
// +m2 + 1 === 2
//
// (+m2 + 1) + "" === "2"
// (convert to string, call this `newstr`)
//
// new Array(3 - newstr.length).join("0") === "0"
// (this adds an appropriate amount of leading zeroes
// so that the total length is 2)
//
// m3 === ".jpg"
});

地点:

\D+   one or more non-digits
\d+ one or more digits
\D+ one or more non-digits
$ end of string (so it only matches the last digits)

然后在执行以下操作后,用返回新字符串的函数替换匹配的字符串:

  1. 数字加1
  2. 添加前导零

关于javascript - 正则表达式替换文件名中的最后一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8049923/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com