正则表达式替换只有一个号码转换为字符串
问题描述:
我有一个代码:正则表达式替换只有一个号码转换为字符串
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);
我需要对项目进行排序,留在升序没有跳过的索引,如何更换不尊重号码索引是?
答
你缺少的逃逸。 []字符:
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);
答
[
和.
是特殊字符,你必须转义:
l = l.replace(/^PontoRoteiro\[0\]\.LocalRoteiro\[\d+\]/,"PontoRoteiro[0].LocalRoteiro["+i+"]")
您可以简化:
l = l.replace(/LocalRoteiro\[\d+\]/,"LocalRoteiro["+i+"]")
+0
']'不是字符类以外的特殊字符。 '.'是字符类以外的特殊字符。 –
+0
@WiktorStribiżew:你说得对,这是我的习惯。 – Toto
+0
这实际上是一个很好的实践,以逃避']',只是它不是一个特殊的字符在这里。 –
“locals”中的所有值具有相同的模式“PontoRoteiro [0] .LocalRoteiro [XXXX]”'?如果是这种情况,只需生成一个长度相同的新阵列并填写值 –
预期结果是什么? ''PontoRoteiro [0] .LocalRoteiro [0]“,”PontoRoteiro [0] .LocalRoteiro [1]“,”PontoRoteiro [0] .LocalRoteiro [2]“,”PontoRoteiro [0] .LocalRoteiro [3]“] '?请参阅https://jsfiddle.net/v4hgoj74/ –
'locals.map((e,i)=> e.replace(/(。*?\ d +。*?)\ d +(。*)/,\'$ 1 $ {i} $ 2 \'))' – Tushar