我需要你的帮助,
我在下面有以下功能。发生了什么,当它被执行时,它将我的本机文件号(x)更改为XAI-2012-402518,当它应该在结尾处添加-2时,然后在此之后每次增加它。 / p>
所需的结果是:XAI-2012-402517-2
而非XAI-2012-402518
通常情况下,字符串中没有任何破折号,它可以正常工作,但我认为这个函数混淆了破折号。
其他例子是:
filenumber -> filenumber-2
filenumber2 -> filenumber-3
XAI-2012-402517 -> XAI-2012-402517-2
XAI-2012-402517-2 -> XAI-2012-402517-3
XAI-2012-402517-3 -> XAI-2012-402517-4
等。
function test2(){
var x = "XAI-2012-402517"
x = x.replace(/^(.+?)(-\d+)?$/, function(a,b,c) { return c ? b+(c-1) : a+'-2'; } );
alert(x)
}
答案 0 :(得分:1)
你的功能完全正确。你有一个算法“捕获最后一个破折号之后的数字并将其增加一个”。 在“XAI-2012-402517”中,破折号后面的数字为402517,因此需要增加。
为了解决这个问题,您需要对条件进行限制。例如,如果小于100,您可能希望仅增加破折号后的最后一位数字:
function test2(x){
x = x.replace(/^(.+?)(-\d{0,2})?$/, function(a,b,c) {
return c ? b+(c-1) : a+'-2'; } );
console.log(x)
}
test2("XAI-2012-402517") //XAI-2012-402517-2
test2("XAI-2012-402517-2") //XAI-2012-402517-3