在replace函数中使用$ 1作为数组的索引

时间:2012-01-24 16:06:21

标签: javascript

var str = "1-2";
var arr = ["", "a", "b"];

我想用“a”替换1,用“b”替换2,这是我的代码。但它没有用。请帮助我。

str = str.replace('(\d)-', arr["$1"]+"-");
str = str.replace('-(\d)', "-"+arr["$1"]);

2 个答案:

答案 0 :(得分:7)

使用匿名函数:

var arr = [ /* ... */ ];

str = str.replace(/\d/, function(match) {
   return arr[match];
});

请注意,这只会替换一次出现(评论者的编辑速度更快;您可能希望使用g修饰符进行正则表达式,以便重复替换,直到正则表达式不匹配)。< / p>

匿名函数的参数是完全匹配的字符串和捕获组(如果有的话)。

答案 1 :(得分:2)

var str = "1-2";
var arr = ["", "a", "b"];
str = str.replace(/(\d)-/, function (mathchedText,$1,offset,str) {
    return arr[$1] + "-"
});

str = str.replace(/-(\d)/,function (mathchedText,$1,offset,str) {
    return "-" + arr[$1]
});

document.write(str);

这是工作代码: http://jsfiddle.net/HsQC7/