2016-08-23 13 views
0

我有一個代碼:正則表達式替換隻有一個號碼轉換爲字符串

var locals = ["PontoRoteiro[0].LocalRoteiro[1]","PontoRoteiro[0].LocalRoteiro[3]","PontoRoteiro[0].LocalRoteiro[4]","PontoRoteiro[0].LocalRoteiro[5]"]; 
var result = []; 

for(var i = 0; i < locals.length; i++) 
{ 
    var l = locals[i]; 
    l = l.replace("^PontoRoteiro[0].LocalRoteiro[[0-9]*$]","PontoRoteiro[0].LocalRoteiro[" + i + "]" ) 
    result.push(l); 
} 

console.log(result); 

我需要對項目進行排序,留在升序沒有跳過的索引,如何更換不尊重號碼索引是?

+0

「locals」中的所有值具有相同的模式「PontoRoteiro [0] .LocalRoteiro [XXXX]」'?如果是這種情況,只需生成一個長度相同的新陣列並填寫值 –

+0

預期結果是什麼? ''PontoRoteiro [0] .LocalRoteiro [0]「,」PontoRoteiro [0] .LocalRoteiro [1]「,」PontoRoteiro [0] .LocalRoteiro [2]「,」PontoRoteiro [0] .LocalRoteiro [3]「] '?請參閱https://jsfiddle.net/v4hgoj74/ –

+1

'locals.map((e,i)=> e.replace(/(。*?\ d +。*?)\ d +(。*)/,\'$ 1 $ {i} $ 2 \'))' – Tushar

回答

0

你缺少的逃逸。 []字符:

var locals = ["PontoRoteiro[0].LocalRoteiro[1]","PontoRoteiro[0].LocalRoteiro[3]","PontoRoteiro[0].LocalRoteiro[4]","PontoRoteiro[0].LocalRoteiro[5]"]; 
     var result = []; 
     var regex, i, l; 
     for(i = 0; i < locals.length; i++) 
     { 
      l = locals[i]; 
      regex = /^PontoRoteiro\[0\]\.LocalRoteiro\[[0-9]+\]/; 
      l = l.replace(regex,"PontoRoteiro[0].LocalRoteiro[" + i + "]"); 
      result.push(l); 
     } 

     console.log(result); 
0

[.是特殊字符,你必須轉義:

l = l.replace(/^PontoRoteiro\[0\]\.LocalRoteiro\[\d+\]/,"PontoRoteiro[0].LocalRoteiro["+i+"]") 

您可以簡化:

l = l.replace(/LocalRoteiro\[\d+\]/,"LocalRoteiro["+i+"]") 
+0

']'不是字符類以外的特殊字符。 '.'是字符類以外的特殊字符。 –

+0

@WiktorStribiżew:你說得對,這是我的習慣。 – Toto

+0

這實際上是一個很好的實踐,以逃避']',只是它不是一個特殊的字符在這裏。 –