现在我写一个方法function rep(str,key){
 var reg = new RegExp(此处填写一个表达式);
 var newStr = str.replace(reg, "");
 return newStr
}
而入参 str不固定,可能是
123,1008,12,13,14,15,16,17,1007,6,7,8,9,18,1005,1006,19,20,1
也可能是
123,1008,12,13,14,15,16,17,1007,6,7,7001,9,18,1005,1006,19,20,1,
也可能是
7,123,1008,12,13,14,15,16,8,9,18,1005,1006,19,20,1,
也可能
123,1008,12,13,14,15,16,17,1007,6,777,8,9,18,1005,1006,19,20,1,
假如key是7,怎么实现,如果有【7,】就把【7,】去掉,如果没有就不去掉,但决不能把【1007,】这样带7的去掉,str这个字符串里的数字,都不相同

解决方案 »

  1.   


    function rep(str,key){
        var s = "(^|\,)(" + key + "\,)";
        var reg = new RegExp(s);
        reg.global = true;
        var newStr = str.replace(reg, "$1");    s = "(^|\,)" + key + "$";
        reg = new RegExp(s);
        reg.global = true;
        var newStr = newStr.replace(reg, "");
        return newStr;
    }var a = [
    "123,1008,12,13,14,15,16,17,1007,6,7,8,9,18,1005,1006,19,20,1",
    "123,1008,12,13,14,15,16,17,1007,6,7,7001,9,18,1005,1006,19,20,1,7",
    "7,123,1008,12,13,14,15,16,8,9,18,1005,1006,19,20,1,",
    "123,1008,12,13,14,15,16,17,1007,6,777,8,9,18,1005,1006,19,20,1,"
    ];
    for(var i=0;i<a.length;i++){
        alert(rep(a[i], "7"));
    }
      

  2.   

    reg.global = true;
    是什么意思?
    $1又是什么意思?麻烦解释下,我JS正则不太会
      

  3.   

    哥们,我是不太会,我要什么都会了,还用发帖?再说,你能告诉我去哪看?你可别说baidu,google,时间有限,发帖只是最少得时间解决问题
      

  4.   


    http://deerchao.net/tutorials/regex/regex.htm你发帖等答案的时间足够你看完上面的入门教程
      

  5.   

    http://deerchao.net/tutorials/regex/regex.htm$1 表示捕获组1 
      

  6.   

    我哪知道有这个教程,你是已经知道这个教程了,所以不用花费太多时间,我也有一些正则的学习资料,但是资料比如电子书的内容都比较广。我工作中很少用到正则,也不太多的用到js,我是做电信软件的,用到的正则,一般我也能解决,解决不了的,比如这次,我才发帖,我不可能花大量时间研究正则,也没这个时间(每天加班到9点,单休)和必要啊。再说,别人回复我的帖子,我没看明白的,询问了一句,有错吗?问问题难道就不是学习?再说我不理解的还有,在此处加reg.global = true;是什么意思?你要知道答案,完全可以告诉我嘛,没必要绕圈子,其实这个问题我已经解决,每人回复时我已经解决了,代码量比1楼的还少,只不过我想看看别人时怎么写的。不过还是感谢你告诉我个学习网址,先收藏了。
      

  7.   


    function rep(str,key){
     var reg = new RegExp('\\b' + key + ',|,' + key + '\\b');
     var newStr = str.replace(reg, '');
     return newStr
    }
    alert(rep('123,1008,12,13,14,15,16,17,1007,6,777,8,9,18,1005,1006,19,20,1,',7));