如何增加字符串中的每个数字?

时间:2011-12-08 14:54:19

标签: javascript regex

我需要在字符串中搜索其中的任何数字并将数字增加1.这样'sermon[thesis][1][name][2]'变为'sermon[thesis][2][name][3]'

4 个答案:

答案 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+捕获的文本中调用,函数返回的文本将用于替换捕获的文本。