我有一个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还可能有其他文本。请帮帮我。 任何指导将不胜感激。
答案 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
。(?=\])
是一个先见之明。当先前匹配的字符后跟]
时,它会使模式匹配。