我需要在字符串中搜索其中的任何数字并将数字增加1.这样'sermon[thesis][1][name][2]'
变为'sermon[thesis][2][name][3]'
。
答案 0 :(得分:5)
这样可以解决问题:
"sermon[thesis][1][name][2]".replace(/\[(\d+)\]/g, function(match, number) {
return "[" + (Number(number) + 1) + "]";
});
工作演示:jsFiddle。
编辑:
要增加最后一个号码,您需要在最后一个$
之前添加一个美元符号/
,这是一个演示:jsFiddle。
答案 1 :(得分:2)
您可以使用replace
,它实际上可以将一个函数作为替换“字符串”。
var str = 'sermon[thesis][1][name][2]';
str = str.replace(/(\d+)/g, function(a){
return parseInt(a,10) + 1;
});
console.log(str); //'sermon[thesis][2][name][3]'
答案 2 :(得分:1)
您可以使用replace()
函数将任何数字与正则表达式匹配,然后返回该值增加1以替换它:
var string = '[1][2]';
string.replace(/[0-9]+/g,function(e){return parseInt(e,10)+1})); //Returns [2][3]
<强> Working Example 强>
答案 3 :(得分:1)
您可以这样做:
var str = "sermon[thesis][1][name][2]";
var newStr = str.replace(new RegExp("\\d+", "g"), function (n) {
return parseInt(a, 10) + 1;
});
基本上,函数将在表达式\d+
捕获的文本中调用,函数返回的文本将用于替换捕获的文本。