var str = "1-2";
var arr = ["", "a", "b"];
我想用“a”替换1,用“b”替换2,这是我的代码。但它没有用。请帮助我。
str = str.replace('(\d)-', arr["$1"]+"-");
str = str.replace('-(\d)', "-"+arr["$1"]);
答案 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/