用split按,分隔,然后逐一比较。

解决方案 »

  1.   

    <script language="JavaScript">
    <!--
    var str = "1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,12:1,12:21,12:1,102:1,102:130,102:1";
    var strDelSame = "";
    str.replace(/\d+:\d+[\,|$]/g,function(){
        if(strDelSame.indexOf(arguments[0]) == -1)
            strDelSame += arguments[0];
    });
    document.write(strDelSame);
    //-->
    </script>我上次不是回过你了,我的代码就可以啊.你还想咋地?
      

  2.   

    晕LZ真够无聊的。。竟然发两次一样的问题。。
    忽忽。。看我们敬爱的zhaoxiaoyang(梅雪香@深圳)大哥怒了不是?
    不过zhaoxiaoyang(梅雪香@深圳)大哥的代码存在着小问题。
    不如你输出下match就知道啦。。最后一个内容没有找到。而且还有可能出现一种情况。
    比如
    101:20,1:20,1:40
    这个里面有两种可能一是indexOf搜索的时候会出现101:20,包括1:20,
    还有那个那个正则没有找到1:40
      

  3.   

    http://community.csdn.net/Expert/topic/5133/5133264.xml?temp=.1774866
    我修改了下zhaoxiaoyang(梅雪香@深圳)大哥的式子
    还学习到了东西忽忽。。不错的样子
    开个帖子给zhaoxiaoyang(梅雪香@深圳)散分,表示感谢
      

  4.   

    那咱就把那个技术给详细点... 哈哈, 1. str.replace() 替换详细
    <script type="text/javascript">
    //<![CDATA[
    var temp = '';
    var num=1;
    var num_=1;
    var ='#';
    var _ar=['a', 'b', 'c', 'b', 'a', 'e', 'c', 'ab'].join(); ///.*?\$|.*?$/g
    var _re=new RegExp('.*?'+.replace(/(.)/g,'\\$1')+'|.*?$','g'); 
    var _re_=new RegExp(.replace(/(.)/g,'\\$1')+'$');

    _ar.replace(_re,function(){
    if(temp.indexOf(arguments[0]) == -1) temp += arguments[0];
    for(var i=0; i<arguments.length; num++, i++){
    document.write(num, ' ',num_,'.',i, '. ', arguments[i],'<br/>');
    }
    document.write('<p/>');
    num_++
    }
    );
    document.write(temp.split(),'<br/>');
    //]]>
    </script>4.1.2 数组操作 2
    <script type="text/javascript">
    //<![CDATA[
    var str='1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,1:3,1:4';
    var str=str.split(',');

    var str1=['中国','国度','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','中国','中国','中国','国度','国度','北京','广东','国度','广东']

    //var str2=[中国,国度,广东,北京]
    var str2=['北京', '国度', '中国', '广东']

    document.write(fDelRddcAr(str),'<br/>');
    document.write(fDelRddcAr(str, true),'<br/>');
    document.write(fDelRddcAr(str, true, 2),'<br/>');
    document.write(fDelRddcAr(str1),'<br/>');
    document.write(fDelRddcAr(str1, true),'<br/>');
    document.write(fDelRddcAr(str1, true, 2),'<br/>');
    document.write(fDelRddcAr(str2),'<br/>');
    document.write(fDelRddcAr(str2, true),'<br/>');
    document.write(fDelRddcAr(str2, true, 2),'<br/>');

    function fDelRddcAr (_ar, _order, _num){
    var temp = '';
    var ='$$#@$%$%#';
    _ar=_ar.join(); ///.*?\$|.*?$/g
    var _re=new RegExp('.*?'+.replace(/(.)/g,'\\$1')+'|.*?$','g'); 
    var _re_=new RegExp(.replace(/(.)/g,'\\$1')+'$');

    _ar.replace(_re,function(){
    if(temp.indexOf(arguments[0]) == -1) temp += arguments[0];
    }
    );
    temp=temp.replace(_re_,'').split();

    if(_order){
    temp=temp.sort();
    if(_num)temp=fOrderAr(temp, _num);
    }

    function fOrderAr(_ar, pram){
    if(pram){
    switch(pram){
    case 1: return _ar.sort(function(a, b){return a-b});
    case -1: return _ar.sort(function(a, b){return b-a});
    default: return _ar.sort();
    }
    } else { return _ar.sort(); }
    }

    return temp;
    } // shawl.qiu code
    //]]>
    </script>
      

  5.   

    进行多次替换,将
    ((\b\d+:\d+\b)(,(?!\2\b)\b\d+:\d+\b)+),\2
    替换成
    $1代码:
    // 正则表达式
    var re = /((\b\d+:\d+\b)(,(?!\2\b)\b\d+:\d+\b)+),\2/g;
    var txt = " 1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,12:1,12:21,12:1,102:1,102:130,102:1";// 验证是否刚好匹配
    while( re.exec(txt) != null)
    {
            txt = txt.replace(re, "$1");
    }alert(txt);测试页面:(推荐)
    http://www.regexlab.com/zh/replshop.asp?pat=%28%28%5Cb%5Cd%2B%3A%5Cd%2B%5Cb%29%28%2C%28%3F%21%5C2%5Cb%29%5Cb%5Cd%2B%3A%5Cd%2B%5Cb%29%2B%29%2C%5C2&rto=%241&txt=%201%3A2%2C1%3A3%2C1%3A4%2C1%3A5%2C2%3A3%2C2%3A4%2C3%3A5%2C1%3A2%2C1%3A4%2C2%3A3%2C1%3A2%2C1%3A3%2C1%3A2%2C12%3A1%2C12%3A21%2C12%3A1%2C102%3A1%2C102%3A130%2C102%3A1
      

  6.   

    小纠正为 =>
    ((\b\d+:\d+\b)(,(?!\2\b)\b\d+:\d+\b)*),\2
      

  7.   

    多谢muxrwc(王辰)的指正
    修改代码如下:
    <script language="JavaScript">
    <!--
    var str = "1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,1:400,101:455,2:3,1:2,1:3,1:2,12:1,12:21,12:1,102:1,102:130,102:1";
    var strDelSame = ",";
    str.replace(/\d+:\d+(?=[\,|$])/g,function(){
        if(strDelSame.indexOf(","+arguments[0]+",") == -1)
            strDelSame += arguments[0]+",";
    });
    document.write(strDelSame);
    //-->
    </script>
      

  8.   

    document.write( strDelSame.replace(/(^\,)|(\,$)/g,"") );
      

  9.   

    /*

    str = 1:2,1:3
    输出结果为,1:2, (?=[\,|$])这里的问题不过看起来没有问题,忽忽,初学不懂,猜测来看应该是有了/g属性后$就不让用了?
    str.replace(/(\d+:\d+)\,?/g, function () {
        if(strDelSame.indexOf(","+arguments[1]+",") == -1)
            strDelSame += arguments[1]+",";
    改成这样就没有问题了。。
    ^o^
    */
      

  10.   

    <script type="text/javascript">
    function formatStrng(val) {
    var nstrng = ",";
    val.replace(/,?(\d+:\d+:[^,]+)/g, function() {
    if(nstrng.indexOf("," + arguments[1] + ",") == -1)
    nstrng += arguments[1] + ",";
    });
    return nstrng.substring(1, nstrng.length - 1);
    }
    var str = "1:2:南澳,1:3:大亚湾,1:4:杨梅水库,1:5:未知,1:2:南澳,1:2:南澳,1:5:未知,1:4:杨梅水库";
    str = formatStrng(str);
    document.write(str);
    </script>
    只要 南澳这种东西里面没有,就不会有问题。