我想把如下代码中字符串str中的“sz[*]”替换成数组sz相对应的值,但是在FF和IE中都只能原样输入str。使用String.match方法试了一下正则匹配,提示null,看样子应该是正则没有匹配上。各位前辈能否指点一下这个问题应该怎么处理?谢谢了先!<html>
<script language="javascript">var sz=["1","2","3","4","5"];var str="sz[1]+sz[2]+sz[3]+sz[4]+sz[5]";for(i=0;i<sz.length;i++)var reg="sz\["+i+"\]";//var reg="sz";alert(str.match(reg));str=str.replace(new RegExp(reg,"g"),sz[i]);document.write("\""+str+"\"");</script>
</html>
<script language="javascript">var sz=["1","2","3","4","5"];var str="sz[1]+sz[2]+sz[3]+sz[4]+sz[5]";for(i=0;i<sz.length;i++)var reg="sz\["+i+"\]";//var reg="sz";alert(str.match(reg));str=str.replace(new RegExp(reg,"g"),sz[i]);document.write("\""+str+"\"");</script>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<script>
var sz = ["1","2","3","4","5"],
str = "sz[0]+sz[1]+sz[2]+sz[3]+sz[4]",
reg = /sz\[(\d)\]/g;
str = str.replace(reg, function(){
return sz[arguments[1]];
});
alert(str);
</script>
</body>
</html>
<html>
<script language="javascript">var sz=["1","2","3","4","5"];var str="sz[1]+sz[2]+sz[3]+sz[4]+sz[5]";for(i=0;i<sz.length;i++)
{
var reg="sz\\["+(i+1)+"\\]";//var reg="sz";alert(str.match(reg));str=str.replace(new RegExp(reg,"g"),sz[i]);}
document.write("\""+str+"\"");
</script>
</html>
sz.result = "25";var str="{1}+ {2} + {3} + {4} + {5} = '{'{result}'}'";
function format(temp, params){
var r = /'\{'|'}'|\{\s*(\w+).*?\}/g;
var s = temp.replace(r, function(m, m1){
if(m == "'{'"){
return "{";
} if(m == "'}'"){
return "}";
} if(m1){
var key = m1;
var val = params.hasOwnProperty(key)
? String(params[key])
: "";
return val;
}
return m;
});
return s;
}alert(format(str, sz));
str = "sz[0]+sz[1]+sz[2]+sz[3]+sz[4]",
reg = /sz\[(\d)\]/g;
str = str.replace(reg, function(){
var args = arguments;
for(var i in args){
console.log(i+": "+args[i]);
}
return sz[arguments[1]];
});
alert(str);