有一个字符串
DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,DP66,123,176_1322030188335,254,181_1322030188338,183,185_1322030188342,199,217,218_1322030188348,DP61,DP68,197,201,202,DP70,197_1322030188362,236_1322030188364,DP71,197_1322030188367,218_1322030188369,189,192,205_1322030188375,206,218_1322030188378,RO66,187,194,RO65,185_1322030188556,193_1322030188558,RO64,182,253,RO62,228,RO61,121,149
我想把里面的带DP 和RO的去掉
比如
DP32,231,235,236
改成
231,235,236
然后把所有的还下划线的后面一截到,这去掉 
如 231_1322030188314,232_1322030188314,233_1322030188314,234_1322030188314
改成231,232,233,234只会出去带DP和RO的数字是要去掉的
DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329
我要的结果是
231,205,198,236
其它的都要去掉
不会正则,求大虾们帮帮忙,,急,

解决方案 »

  1.   


    <%
    s = "DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329"Set re = New RegExp
    re.Global = True
    re.Pattern = "(DP\d+)|(RO\d+)|(_\d+)"
    s = re.Replace(s, "")
    re.Pattern = "\,+"
    s = re.Replace(s, ",")
    a = Split(s, ",")
    Set dic = CreateObject("Scripting.Dictionary")
    For i = 0 To UBound(a)
        If a(i)<>"" Then
            If Not dic.Exists(a(i)) Then dic.Add CStr(a(i)), a(i)
        End If
    Next
    aItem = dic.Items
    Set dic = Nothings = Join(aItem, ",")Response.Write s
    %>
      

  2.   

    var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
    var arr = str.split(',');
    for(var i = 0; i < arr.length;  i++){
    if(/DP|RO/.test(arr[i])){
    arr.splice(i, 1);
    i--;
    }else{
    arr[i] = arr[i].replace(/\_.*/, '');
    }
    }
    alert(arr.join(','));
      

  3.   

     var re = /DP\d*,|RO\d*,|_\d*/gi
      str = str.replace(re,'')
      

  4.   

    function filter(str){
    var arr = str.split(',');
    for(var i = 0; i < arr.length;  i++){
    if(/DP|RO/.test(arr[i])){
    arr.splice(i, 1);
    i--;
    }else{
    arr[i] = arr[i].replace(/\_.*/, '');
    }
    }
    var ret = arr.join(',').replace(/(?=^\,)([^,]+),(?=.+\1)/g, "");
    return ret;
    }

    var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
    alert(filter(str));
      

  5.   

    这个重复的怎么处理啊VB的啊,好像不行的说,我要在JS 里面处理才行
      

  6.   


    var str='DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,DP66,123,176_1322030188335,254,181_1322030188338,183,185_1322030188342,199,217,218_1322030188348,DP61,DP68,197,201,202,DP70,197_1322030188362,236_1322030188364,DP71,197_1322030188367,218_1322030188369,189,192,205_1322030188375,206,218_1322030188378,RO66,187,194,RO65,185_1322030188556,193_1322030188558,RO64,182,253,RO62,228,RO61,121,149';
    str+=',';
    str=str.replace(/(?:DP|RO)[^,]+,/g,'');
    str=str.replace(/([0-9]{3})_[^,]+/g,'$1');
    str=str.replace(/,$/,'');
    var ss=str.split(',');
    var s='';
    var k;
    var len=ss.length;
    LP:
    for(var i=0;i<len;i++){
    for(var j=i+1;j<len;j++){
    if(ss[i]==ss[j]){
    continue LP;
    }
    }
    s+=ss[i]+',';
    }
    s=s.replace(/,$/,'');
    alert(s);
      

  7.   

    去重的在5楼,再来个纯正则的 var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
    alert(str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*|(?=^|,)([^,]+),(?=.+\1)/gi, ''));
      

  8.   


    var s = "DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329"
    var re =/(DP\d+)|(RO\d+)|(_\d+)/g;
    s = s.replace(re, "");
    re = /\,+/g
    s = s.replace(re, ",")
    var a = s.split(",");
    var b = [];
    for(var i = 0; i<a.length;i++){
        if(a[i]!=""){
           var f = false;
           for(var j=0;j<b.length;j++){
              if(b[j]==a[i]){f = true; break;}
           }
           if(!f) b.push(a[i]);
        }
    }s = b.join(",")alert(s)
      

  9.   

    var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,231';
    str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); //删字段
    str = str.replace(/(?=^|,)([^,]+),(?=.+\1)/g, ''); //去重复
    alert(str);
      

  10.   

    小修改了下 var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,231';
    str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); //删字段
    str = str.replace(/(?=^|,)([^,]+),(?=.+,\1(?:,|$))/g, ''); //去重复
    alert(str);
      

  11.   

    很谢谢大家的帮助 ,我只能说,眼花缭乱,各种方法让我难以取舍很感谢axiheyhey
    但是我想说,最后的这个,在去重复的时候,有些没能去掉
    这是原始数据
    DP51,DP60,DP63,205,DP64,198,DP65,236_1322034816304,DP66,123,176_1322034816311,254,181_1322034816315,183,185_1322034816319,199,217,218_1322034816325,DP61,DP68,197,201,202,DP70,197_1322034816338,236_1322034816339,DP71,197_1322034816343,218_1322034816346,189,192,205_1322034816351,206,218_1322034816355这是去重复后的
    198,236,123,176,254,181,183,185,199,217,218,197,201,202,197,236,197,218,189,192,205,206,218
    197出现3次,218出现2次
      

  12.   

    没怎么调试呵呵,下面这个应该可以了 var str = 'DP51,DP60,DP63,205,DP64,198,DP65,236_1322034816304,DP66,123,176_1322034816311,254,181_1322034816315,176,176,183,236,176';
    str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); // 删字段
    str = str.replace(/(^\d+|,\d+)(?=.*\1(?:,|$))/g, '');  // 去重复
    alert(str);