在Javascript中重新编号字符串内的整数

M. *_*age 0 javascript regex

我想重新编号一个字符串内的整数,它具有这种格式(字母和整数):"e1b2xx4d3".

在这个例子中,我想得到:"e1b2xx3d4";

我写了以下JS代码:

var count = 0;
var matches;
var transcript = "e1b2xx4d3";
var transcript1 = transcript;
regex = /\d+/g;
while ((matches = regex.exec(transcript)) !== null) {
    transcript1 = transcript1.replace(matches[0], ++count);
}
console.log(transcript1);
Run Code Online (Sandbox Code Playgroud)

我们的想法是用字符串编号(count)替换字符串中的每个数字,但由于破坏性替换它不起作用(这里,我们得到"e1b2xx4d3",因为"xx4"被替换为"xx3",但在下一次迭代"xx4"返回).

我需要使用正则表达式执行此操作,因为我处理的情况比显示的情况更复杂并且需要使用正则表达式.

我认为我必须在两次通过(迭代)中完成它:1.编译替换和2.同时应用替换.

通过好奇,有人可以找到一种方法来一次性做到这一点?

小提琴:http://jsfiddle.net/0frru6fr/

geo*_*org 7

这通常通过替换功能完成:

n = 0
result = "e1b2xx4d3".replace(/\d+/g, function() { return ++n })
alert(result)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档.