正则表达式只将一个数字替换为字符串

时间:2016-08-23 11:58:20

标签: javascript regex

我有一个代码:

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);

我需要对项目进行排序,保持升序而不跳过索引,如何替换不尊重索引的数字?

2 个答案:

答案 0 :(得分:0)

[.是特殊字符,您必须逃避它们:

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

您可以简化:

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

答案 1 :(得分: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);