2014-12-03 47 views
0

我想重新編號一個字符串中的整數,它具有這種格式(字母和整數):「e1b2xx4d3」。用Javascript重新編寫一個字符串中的整數

在這個例子中,我想得到:「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); 

的想法是由它的序列號(計數),以替換字符串中的每個數字,但它並沒有因爲破壞性的內容替換的工作(在這裏,我們得到「e1b2xx4d3」,因爲「xx4」被替換爲「xx3」,但在下一次迭代中被「xx4」替換)。

我需要這樣做與正則表達式,因爲我處理的情況比所示的更復雜,並要求使用正則表達式。

我認爲我必須做兩遍(迭代):1.編譯替換和2.同時應用替換。

通過好奇心,有人可以找到一種方法來做到這一點?

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

回答

7

這通常是一個替換函數來完成:

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

docs獲取更多信息。

+0

不錯。我今天學到了東西。 – 2014-12-03 12:58:15

相關問題