var str1 = "<a href='http://www.abcd.{0}.html'>{0},{1}</a>:Col1,Col2";
//将两个字段存入数组
var arrColnum = str1.split(":")[1].split(",");
var innerhtml = str1.split(":")[0];
//将{0},{1}替换成字段Col1,Col2对应的值
//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}

解决方案 »

  1.   

    添加反义符\
    innerhtml =innerhtml.replace(/\{0\}/g,data.arrColnum[i]);
      

  2.   

    js 正则有两种构造方式 第一种就是楼主这种第二种则是用字符串来构造var reg = new RegExp(pattern, attributes);例如  var reg = new  RegExp("{0}", "g");;
      

  3.   

    String.prototype.format = function() {
    var args = arguments;
    var index = 0;
    return this.replace(/{\d{1}}/g, function() {
    return args[index++];
    });
    };
    通过这种方式可以的,然后再调用str.format(args0, args1 .......);