<script language="javascript">
var a="6,12,26,6,6,16,6";
var str="6" 
var b=new RegExp(",("+str+",)+","g"); 
var c=(","+a+",").replace(b,",").replace(/(^,|,$)/g,"");   //这个错误,结果为"12,21" 
alert(c)
</script>

解决方案 »

  1.   

    这个你要吧你原来的var a="12,26,6,16,6";
    这个重新构造一个字符串,也就是前后都加上一个逗号,也就是var b=","+a+",";
    这样就可以匹配了
      

  2.   


    <script>
    var a = "6,12,26,6,16,6"; 
    a = "," + a + ",";
    var c = a.replace(/,6,/g,",");
    c = c.replace(/^,+|,+$/g,"");
    alert(c);
    </script>
      

  3.   

    <script type="text/javascript">
    var removeKey = function () {
    return (','+ arguments[0]).replace(
    new RegExp(
    ',(?:' + arguments[1].replace(/,/g, '|') + ')(?=,|$)', 'g'
    )
    , ''
    ).substr(1);
    };
    alert(
    removeKey('612,26,12,6,16,6', '12,6') //把串中所有12和6都k掉
    );
    </script>
      

  4.   

    直接匹配
    ,key,
    会忽略连续的
    因为
    后面的,占用了字符
    所以剩下的字符是key,而不是,key,了..
    :DHB前辈的正确...
      

  5.   

    var re = new RegExp("\\b"+key+"\\b","ig");
    str = str.replace(re,"").replace(/,{2,}/g,",");
      

  6.   

    //呵呵刚才手快了 再优化下 这个是最好的了
    var re = new RegExp("\\b"+key+",?","ig");
    str = str.replace(re,"");
      

  7.   

    解释一下\b这个东西 是匹配字符和非字符的界限的
    123-456 
    这里
    (开始和1) (3和-) (-和4) (6和结束)
    之间就是字符和非字符的界限 都可以用\b来匹配这个交界点
    这个东西确实很实用,但确经常被忽略。
    我也是最近优化数据采集引擎时才发现原来忽略了一个这么重要的符号。例:要区分以下内容时就要用到它了
    <a href="xxxx">cccc</a>
    <area href="xxxx"/>
    <a>dddd</a>
    以前为了区分前2种我是这么写的
    <a\s[^>]*>
    但第三种情况就无法匹配
    后来用
    <a\b[^>]*>
    就没问题了
      

  8.   

    :D
    用\b也不错不过.要两边都有的
    若是
    ,?
    则会出现
    key[number]
    中的key被K掉...
    所以要
    \bkey\b
    然后在处理,
    或者直接这样<script>
    var str = '126,26,12,6,16,6,12'
    var re = new RegExp(",??\\b"+12+"\\b,??","ig");
    str = str.replace(re,"");
    alert(str);
    </script>
      

  9.   

    2楼的最简单
    6楼的是不是可以这样优化一下.
    <script type="text/javascript">
    var removeKey = function () {
        return (','+ arguments[0]).replace(
            new RegExp(
                ',(?:' + arguments[1] + ')(?=,|$)', 'g' //去掉这里的替换
            )
            , ''
        ).substr(1);
    };
    alert(
        removeKey('612,26,12,12,6,6,6,16,6', '12|6') //把串中所有12和6都k掉
    );
    </script>其他的好象多少都有点问题,因为似乎没考虑到两个连续的6.