<SCRIPT LANGUAGE="JavaScript">
<!--
var str1="guide_12/guide_13+get_data(project_id,user_id,guide_23,guide_45,guide_48)"var a = str1.replace(/get_data\(([^\)]*)\)/g,function(){return arguments[0].replace(/(\w*\_\d+)/g,function(){return "'" + (arguments[1]) +"'";})});alert(a);
//-->
</SCRIPT>

解决方案 »

  1.   

    可以从后面的,和)两个符号入手更为简单些
    <script language=javascript>
    str="guide_12/guide_13+get_data(project_id,user_id,guide_23,guide_45,guide_48)"
    re=/(guide_\d{2})([,)])/g
    str=str.replace(re,"\'$1\'$2");
    alert(str)
    </script>
      

  2.   

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var str = "guide_12/guide_13+get_data(project_id,user_id,guide_23,guide_45,guide_48)"+
              "guide_12/guide_13+get_data(project_id,user_id,guide_23,guide_45,guide_48)";
    str = str.replace(/\+(get_data\()/gi, "+report.$1")
          .replace(/,(guide_\d+)/gi, ",\'$1\'");
    alert(str);
    //-->
    </SCRIPT>
      

  3.   

    CSDN上真是高手如云啊 ̄ ̄刚才测试了一下。我用测试用例是: str = "(guide_12+guide_13)/guide_145+report.get_data(project_id,user_id,guide_123,guide_45,guide_48,user_id)"+
              "+guide_12/guide_13+Combo(report.get_data(project_id,user_id,guide_123,guide_45,guide_48),user_id)";*/
    str = str.replace(/\+(get_data\()/gi, "+$1").replace(/,(guide_\d+)/gi, ",\'$1\'");
    alert(str);
    str="(guide_12+guide_13)/guide_145+report.get_data(project_id,user_id,guide_123,guide_45,guide_48,user_id)"+
              "+guide_12/guide_13+Combo(report.get_data(project_id,user_id,guide_123,guide_45,guide_48),user_id)";
    re=/(guide_\d{1,})([,)])/g ;
    str=str.replace(re,"\'$1\'$2");
    alert(str);经过测试和小小的修改, hbhbhbhbhb1021(天外水火(我是SB,我要多努力)) 和 meizz(梅花雪) 都可以通过。另外感谢meizz(梅花雪)的认真,我才发现自己在描述问题中的一个小错误,有段话应该是这样的:“有一个由前台程序组合出来的字串类似于:
    str1="guide_12/guide_13+report.get_data(project_id,user_id,guide_23,guide_45,guide_48)"
    如何将其替换成如下格式:
    str1="guide_12/guide_13+report.get_data(project_id,user_id,'guide_23','guide_45','guide_48')"”,另外括号应该都是英文的。1楼的ttyp(@http://www.cnblogs.com/ttyp/) 给的没法通过测试,我看不大懂也没改成功。不知道1楼的能不能再写一个呢?这样三个人我都可以给分了。正在理解三位使用的方法,虽然还是不大懂,但也有收获:)
      

  4.   

    hbhbhbhbhb1021(天外水火(我是SB,我要多努力)) :
    这个就通不过
    str="(guide_12/guide_13+get_data(project_id,user_id,guide_23,guide_45,guide_48 )+guide_12)"meizz:这个也不能通过
    var str = "guide_12/guide_13+get_data(guide_23,project_id,user_id,guide_23,guide_45,guide_48)";
    我这个:<SCRIPT LANGUAGE="JavaScript">
    <!--
    var str1 = "(guide_12+guide_13)/guide_145+report.get_data(project_id,user_id,guide_123,guide_45,guide_48,user_id)"+
              "+guide_12/guide_13+Combo(report.get_data(project_id,user_id,guide_123,guide_45,guide_48),user_id)";var a = str1.replace(/get_data\(([^\)]*)\)/g,function(){return arguments[0].replace(/(\w*\_\d+)/g,function(){return "'" + (arguments[1]) +"'";})});alert(a);
    //-->
    </SCRIPT>那里不能通过?
      

  5.   

    <script language=javascript>
    str="guide_12/guide_13+get_data(project_id,user_id,guide_23 ,guide_45,guide_48)"
    re=/(guide_\d{2})(\s*[,)])/g
    str=str.replace(re,"\'$1\'$2");
    alert(str)
    </script>
      

  6.   

    TO ttyp(@http://www.cnblogs.com/ttyp/) 
    我是说“经过测试和小小的修改, hbhbhbhbhb1021(天外水火(我是SB,我要多努力)) 和 meizz(梅花雪) 都可以通过。”你的我看得不大懂所以没改,能解析一下吗?帮个忙:)
    hbhbhbhbhb1021(天外水火(我是SB,我要多努力)) 的把re=/(guide_\d{2})(\s*[,)])/g改成了re=/(guide_\d{1,})(\s*[,)])/g,这个我说过了是任意数字可以是1位可以是多位。meizz(梅花雪) 的看到了我第一句里有get_data()函数到第二句后变成了report.get_data()这其实是我手误,应该都是report.get_data() 。你的那段针对str = "(guide_12+guide_13)/guide_145+report.get_data(project_id,user_id,guide_123,guide_45,guide_48,user_id)"+"+guide_12/guide_13+Combo(report.get_data(project_id,user_id,guide_123,guide_45,guide_48),user_id)";这个测试串的正则式能不能再发一次??谢了:)
      

  7.   

    str.replace(正则,function)
    一个正则循环替换的方法,它会把每个匹配的子字符串作为函数的参数,在函数里,你还可以对这个子字符串进行任意的改造,arguments是js自带的对象,表示函数参数列表,arguments[0]就是子字符串,arguments[0]就是分组的第一个字符串,相当$1,依次类推,正则我想不用我解释了吧
      

  8.   

    谢谢各位,谢谢楼上的。
    准备结贴,因为meizz(梅花雪) 的细心,我发现自己的一些错误。多给些分大家不会介意吧?