Comment augmenter chaque numéro dans une chaîne?

J'ai besoin de rechercher une chaîne pour n'importe quel nombre et d'augmenter les nombres par 1. Donc, ce 'sermon[thesis][1][name][2]' devient 'sermon[thesis][2][name][3]' .

Ça fera l'affaire:

 "sermon[thesis][1][name][2]".replace(/\[(\d+)\]/g, function(match, number) { return "[" + (Number(number) + 1) + "]"; }); 

Démonstration de travail: jsFiddle .

MODIFIER:

Pour incrémenter le dernier numéro, vous ajouteriez un signe dollar $ avant le dernier / , voici une démo: jsFiddle .

Vous pouvez utiliser le replace , il peut effectivement prendre une fonction en remplacement de "chaîne".

 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]' 

Vous pouvez faire quelque chose comme ceci:

 var str = "sermon[thesis][1][name][2]"; var newStr = str.replace(new RegExp("\\d+", "g"), function (n) { return parseInt(a, 10) + 1; }); 

En principe, la fonction serait appelée lorsque le texte a été capturé par l'expression \d+ , le retour de texte de la fonction serait utilisé pour remplacer le texte capturé.

Vous pouvez utiliser la fonction replace() pour faire correspondre n'importe quel nombre avec une expression régulière, puis renvoyer cette valeur augmentée de 1 pour la remplacer:

 var string = '[1][2]'; string.replace(/[0-9]+/g,function(e){return parseInt(e,10)+1})); //Returns [2][3] 

Exemple de travail