javascript replace 问题,正则表达式含变量

var str1 = "<a href='http://www.abcd.{0}.html'>{0},{1}</a>:Var1,Var2";
//将两个字段存入数组
var arrColnum = str1.split(":")[1].split(",");
var innerhtml = str1.split(":")[0];
//将{0},{1}替换成字段Var1,Var2对应的值
//data.arrColnum[i]不必考虑
//问题在正则表达式上,这么写把{i}作为了正则表达式
//我想要的是{0},{1},...做为正则表达式,怎么写?谢谢
for (var i=0;i<arrColnum.lenght;i++) {
innerhtml =innerhtml.replace(/{i}/g,data.arrColnum[i]);
}
alert(innerhtml);
innerhtml =innerhtml.replace(/{0}/g,data.arrColnum[i]);
innerhtml =innerhtml.replace(/{1}/g,data.arrColnum[i]);
这么写无问题,均可以得到数据,但是 var str1 里也许有{2},{3},,,{n}

哥哥你非得用正则一个一个匹配吗..本来正则的意义就是让你在不知道具体值的情况下进行匹配的..你要非这么做的话
innerhtml.replace(/{(\d+)}/,function(a,b){return data.arrColnum[b-1];});
你匹配里面的数字,把数字传进arrColnum
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-12
将{}用实体名写在正则里试试
第2个回答  2010-08-12
将{}用实体名写在正则里试试
第3个回答  2010-08-12
<script>
var str1 = "<a href='{0}.html'>{0},{1}</a>:Var1,Var2";
var arr=str1.split(":");
var str2=arr[0]+arr[1];
var var_n=arr[2].split(",");
for(var i=0;i<var_n.length;i++)
{
var reg = eval("/\\{"+i+"\\}/ig");
while(reg.test(str2))
str2=str2.replace("{"+i+"}",var_n[i]);

}
alert(str2);
</script>

是这样子吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网