var str='@test1@,@test2@,@test3@,@test4@' 
把@@中间的数据依次替换为1,2,3,4 
怎样写?

解决方案 »

  1.   

    错了,忘记加g全局匹配了
    str=str.replace(/@test(\d+)@/g,"$1");
      

  2.   


    var str='@test1@,@test2@,@test3@,@test4@';var pattern = /@.*?@/g;
    var i = 0;
    str = str.replace(pattern,function(){
     return  "@" + (++i) + "@";
    });
    alert(str);
      

  3.   

    var str='@test1@,@test2@,@test3@,@test4@';
    var arr = [1,2,3,4];
    var pattern = /@.*?@/g;
    var i = 0;
    str = str.replace(pattern,function(){
            return  arr[i++];
    });
    alert(str);
      

  4.   

    比如有个 数组 arr=["1ss","2dd","3ff","4gg"];
    我想把第一匹配出来的替换为 arr【1】
    第二个匹配出来的 arr【2】
    依次这样
      

  5.   

    var str='@test1@,@test2@,@test3@,@test4@';
    var arr=["1ss","2dd","3ff","4gg"]
    var pattern = /@.*?@/g;
    var i = 0;
    str = str.replace(pattern,function(){
            return  arr[i++];
    });
    alert(str);
      

  6.   

    <script>
    function f()
    {
    var arr=["one","two","third","four","five"];
    var reg = /@test(\d+)@/gi
    var val = document.getElementById("text").value;
    alert(reg.test(val));
    alert(val.replace(reg,function(sMatch){
    alert(sMatch.search(/\d+/));
    return arr[sMatch.match(/\d+/)];
    }));
    }
    </script>
    <body>
    <input type="text" id="text"/>
    <input type="button" onclick="f();" value="Test"/>
    </body>
    这个是你要的吗
      

  7.   

    var arr=["one","two","third","four","five"];
    var val="@test1@,@test2@,@test3@,@test4@";
    val.replace(/@test(\d+)@/gi,function(sMatch){
    return arr[sMatch.match(/\d+/)];
    })