var s = "D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
var a = s.match(/(|@)?(D[^@]+)/g);
if(a)
{
  s = a.join("").replace(/\w\$\w\$/g, "");
}
alert(s);

解决方案 »

  1.   

    我的建议是最好给拼成的字符串前加一个“@”符号,这样处理起来方便些
    <script>
    var str = "@D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
    alert(str);
    str = str.replace(/@[^\$]*\$[^\$]*\$([^@]*)/gi,"@$1");
    alert(str);
    </script>
      

  2.   

    var s = "D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
    var a = s.match(/(|@)?(D[^@]+)/g);
    if(a) s = a.join("").replace(/(|@)(\w\$\w\$)/g, "$1");
    alert(s);
      

  3.   

    var s = "D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
    s = s.replace(/(^|@)([^D@][^@]+)/g, "").replace(/(^|@)(\w\$\w\$)/g, "$1");
    alert(s)
      

  4.   

    var s = "D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
    s = s.replace(/(^|@)(\w\$)(\d+)([^@]+)/g, "$3,");
    alert(s);
      

  5.   

    var s = "D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
    var D = s.replace(/(^|@)([^D@][^@]+)/g, "").replace(/(^|@)(D\$)(\d+)([^@]+)/g, "$3,");
    var F = s.replace(/(^|@)([^F@][^@]+)/g, "").replace(/(^|@)(F\$)(\d+)([^@]+)/g, "$3,");
    alert(D);
    alert(F);
      

  6.   

    再次麻烦你一下
    请帮我写一个正则表达式
    有一个字符串D$3$1,2,3@D$4$8,7,4@........@D$23$89,76@.......@F$1002$2,3
    是一个以@作为分隔符的字符串
    怎么取得以D开头的串的第二个$后面的字符串,然后拼成如下形式
       1,2,3@8,7,4@......@89,76@.......
    省略号表式下面还有很多最好用下面的形式写:(先判断是否以开头再把它拼成需要的串)
    var str = "D$3$1,2,3@D$4$8,7,4@........@D$23$89,76@.......@F$1002$2,3";
    var mm = "";
    var a = str.match([需要的正则表达式]);
    if(a!=null)

       for(var i=0; i<a.length; i++) 
          a[i]=a[i].replace(/[需要的正则表达式], "");
    }
    mm += a.join(",") +"@";
    alert(mm)
      

  7.   

    再次麻烦你一下
    请帮我写一个正则表达式
    有一个字符串D$3$1,2,3@D$4$8,7,4@........@D$23$89,76@.......@F$1002$2,3
    是一个以@作为分隔符的字符串
    怎么取得以D开头的串的第二个$后面的字符串,然后拼成如下形式
       1,2,3@8,7,4@......@89,76@.......
    省略号表式下面还有很多最好用下面的形式写:(先判断是否以D开头再把它拼成需要的串)
    var str = "D$3$1,2,3@D$4$8,7,4@........@D$23$89,76@.......@F$1002$2,3";
    var mm = "";
    var a = str.match([需要的正则表达式]); //判断是否以开头
    if(a!=null)

       for(var i=0; i<a.length; i++) 
          a[i]=a[i].replace(/[需要的正则表达式], ""); 
           mm += a.join(",") +"@";         //拼成需要的串}
    alert(mm)
      

  8.   

    http://expert.csdn.net/Expert/topic/2572/2572361.xml?temp=.2900202var s="D$3$1,2,3@D$7$1,2,7@F$9$1,2,3@F$1003$1,2,3";
    var D=s.replace(/(^|@)([^D@][^@]+)/g,"").replace(/(^|@)(\w+\$\w+\$)/g,"$1");
    var F=s.replace(/(^|@)([^F@][^@]+)/g,"").replace(/(^|@)(\w+\$\w+\$)/g,"$1");