我想重新编号一个字符串内的整数,它具有这种格式(字母和整数):"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.同时应用替换.
通过好奇,有人可以找到一种方法来一次性做到这一点?
这通常通过替换功能完成:
n = 0
result = "e1b2xx4d3".replace(/\d+/g, function() { return ++n })
alert(result)Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅文档.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |