0

我有一个文本区域(ID为'work'),方括号中有连续的数字,如下所示:

[6] [7] [8] [9] [10]

我希望在按下按钮时,每个按钮都应该增加 1,如下所示:

[7] [8] [9] [10] [11]

我如何在 Javascript 中执行此操作?我写了以下内容,但它不起作用:

addOne = function() {
    var work = document.getElementById('work');
    var re = /\[\d+\]/g
    var arr = re.match(work.value);
    var len = arr.length;
    var pat = /\d+/
    var begin = pat.exec(arr[0]); 
    var last = pat.exec(arr[len-1]);
    for (i=begin;i<=last;i++) {
        var re1 = new RegExp("[i]"); 
        var re2 = new RegExp("[i++]");
        var newval = work.value.replace(re1,re2);
        work.value = newval;
    }
}

除了这些数字之外,文本区域还可能有其他文本。请在这里帮助我。任何指导将不胜感激。

4

1 回答 1

2

我将.replace与 RegExp 和回调函数结合使用(演示:http: //jsfiddle.net/veYTt/):

var work = document.getElementById('work');
work.value = work.value.replace(/\[(\d+)(?=\])/g, function(full_match, i) {
    return '[' + ++i;
});

我使用++i, 因为从字符串++i转换i为数字,并返回值i + 1。另一种选择是(i + 1*1).

正则表达式的解释:

  • \[匹配[
  • (\d+)匹配并捕获任何整数。该组作为第二个参数传递给回调函数,我将其命名为i.
  • (?=\])是前瞻。当先前匹配的字符后跟时,它会导致模式匹配]
于 2012-07-07T19:19:09.530 回答