使用RegExp增加textarea中的数字

时间:2012-07-07 19:15:13

标签: javascript regex

我有一个textarea(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;
    }
}

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

1 个答案:

答案 0 :(得分: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)

RegExp的说明:

  • \[匹配[
  • (\d+)匹配并捕获任何整数。该组作为第二个参数传递给回调函数,我将其命名为i
  • (?=\])是一个先见之明。当先前匹配的字符后跟]时,它会使模式匹配。