function getreg(a,b)
{
var p=b;
var t="("+a+")";
var reg=new RegExp(t,"ig");
reg.test(p);
for (i=1;i<=RegExp.length;i++)
{
p.replace(RegExp.$i,"<here>"+RegExp.$i+"<here>");
}
document.getElementById("t2").value=p;
}为什么t2中有符合正则的内容却没有变化?

解决方案 »

  1.   

    将这句p.replace(RegExp.$i,"<here>"+RegExp.$i+"<here>");
    改为p=p.replace(RegExp.$i,"<here>"+RegExp.$i+"<here>");试试
      

  2.   

    首先test方法不会修改全局的RegExp,其次没有 RegExp.$+变量的用法。
      

  3.   


    function getreg(a,b)
    {
    var p=b;
    var t="("+a+")";
    var reg=new RegExp(t,"ig");
    reg.exec(p);//或者p.match(reg); 来更新全局RegExp
    p = p.replace(reg,"<here>"+RegExp.$1+"<here>");
    alert(p);
    //document.getElementById("t2").value=p;
    }
    getreg("a","abab");
      

  4.   

    如果我要replace所有符合正则的要如何写?
      

  5.   


    指定g即可。以上代码就是全部符合的都替换。
    var reg=new RegExp(t,"ig");
      

  6.   

    不过后面的正则和前面的有可能不一样,比如验证QQ号码的正则[1-9][0-9]{4,}
    字符串"123456879\///abcde987654321"
    我要的效果是<here>123456879<here>\///abcde<here>987654321<here>
    但是如果像您那样写的话就变成了<here>123456879<here>\///abcde<here>123456879<here>
      

  7.   

    RegExp.$i?这么做应该得到的是undefined!
    建议你试试 RegExp['$'+i]
    其它内容未细看。
      

  8.   


    function getreg(a,b)
    {var p=b;
    var t=a;var reg=new RegExp(t,"ig");
    var tmpres = reg.exec(b);//或者p.match(reg); 来更新全局RegExpwhile(tmpres != null)
    {
        p = p.replace(tmpres,"<here>"+tmpres+"<here>");
        tmpres = reg.exec(b);
    }alert(p);
    }
    getreg("[1-9][0-9]{4,}","123456879abacdae987654321adfa23432423432");对RegExp不太熟悉,试了试,就这个方法还凑合。但是有个问题,如果匹配的内容有相同的,比如12345da12345da12345,就会出现只对第一个12345替换坐等高手!
      

  9.   


    function getreg(a,b)
    {
    var p="";
    var t="("+a+")";
    var reg=new RegExp(t,"ig");var m ;
    var n=0;
    while((m = reg.exec(b))!=null)
    {
      var temp = b.substring(n,m.index+RegExp.$1.length);
      n = m.index+RegExp.$1.length;
      p += temp.replace(RegExp.$1,"<here>"+RegExp.$1+"<here>")
    }
     p+=b.substr(n,b.length-n);alert(p);
    //document.getElementById("t2").value=p;
    }
    getreg("[1-9][0-9]{4,}","123456879\///abcde987654321");