2015-03-18 79 views
2

我的字母数字字符串始终以数字结尾,但可能会有其他数字在早期嵌入。在字母数字字符串末尾的javascript增量数字

我需要递增数字结尾并返回新的ID号。

例子:

A48-DBD7-398 

将在一个循环递增:

A48-DBD7-398 
A48-DBD7-399 
A48-DBD7-400 

如何分离出从字符串的其余部分的数字尾巴,然后保存两个部分进不同的变量?

我发现其他几个S.O.这些问题将字符串中的数字分开,但他们无法处理第一部分中的混合字母数字字符 - 否则他们将所有数字分开,而不管它们在哪里。我只需要得到尾数字。


更新:这个问题仍然是开放

我发现在我的解决方案不工作的情况下:

ABC123-DE45-1 

重复为:

ABC2 
ABC3 
ABC4 

jsFiddle Demo

+0

我不明白为什么拆分数字需要纯粹的alpha第一部分?如果你知道ID从最后一个连字符开始,那么分割就可以工作,并且是迄今为止最好的解决方案。 – RainingChain 2015-03-19 04:40:05

回答

3

如果你有兴趣在一个不同的方法,你可以做这样的事情:

$('button').click(function() { 
    var value = $('#in').val(); // get value 
    for (var i = 1; i <= 5; i++) { 
     value = value.replace(/(\d+)$/, function (match, n) { 
      return ++n; // parse to int and increment number 
     }); // replace using pattern 
     $('#result')[0].innerHTML += '<br>' + value; 
    } 
}); 
+1

你的解决方案绝对是一个改进[jsFiddle Demo](http://jsfiddle.net/709ayh4r/2/)。谢谢+1 – crashwap 2015-03-19 11:21:07

0

更新:见新科OP问题的底:“这个问题仍然是开放”

我想通了,和我发帖的未来求职者的问题。

jsFiddle Demo

HTML:

<input id="in" type="text" value="A48-DBD7-395" /> 
<button>Go</button> 
<div id="result"></div> 

JS/JQ:

$('button').click(function(){ 
    var ser = $('#in').val(); 
    var num = parseInt(ser.match(/\d+$/)); 
    var pos = ser.indexOf(num); 
    var str = ser.slice(0,pos); 

    for (n=1;n<=5;n++){ 
     num++; 
     ser = str + num; 
     $('#result').html($('#result').html() +'<br>'+ser); 
    } 
});