<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我是FE,也是Fe

    前端來源于不斷的點滴積累。我一直在努力。

    統計

    留言簿(15)

    閱讀排行榜

    評論排行榜

    使用正則替換textarea種的重復行

    有這么個需求,將textarea中的重復行去掉。結果將每行join(",")。

    最開始拿到這個需求時,想當然的這么寫了:
            var s ="a\r\na\r\naa\r\nc\r\nc\r\nc\r\n\r\nb\r\nb\r\n";

            
    var o={},//記錄不重復的行
                arr= s.split(/\r?\n/gi),//取到textarea值時IE中的回車是\r\n,!IE只是\n
                i=arr.length,
                result
    ="";
            
    while(i--){
                
    if(arr[i] && (!o[arr[i]])) o[arr[i]]=1;
            }
            
    for (var k in o ){
                
    if(result!="") result=result+",";
                result
    +=k;
            }
            alert(result);

    沒有問題,很常規的做法。后來總想是不是可以用正則去做這個事情,順便可以溫習一下正則,經反復測試,寫出了一個下面的代碼:
    var s ="a\r\na\r\naa\r\nc\r\nc\r\nc\r\n\r\nb\r\nb\r\n";
            
    var regResult =s.replace(/\r?\n/gi,",")  // \r\n->,
                .replace(/((\,[^\,]+)|(^[^\,]+))(?=((.*\1\,)|(.*\1$)))/gi,"")        //去除重復
                .replace(/^\,|\,$|\,(?=\,)/gi,"");//去掉多余的,
            alert(regResult);

    就這么個正則折騰了一上午,當然,字符串也是取了一個比較極端的情況,比如即有a又有aa (行內容包含的情況),3次出現的情況,首尾重復的情況。

    去除重復的正則用了寬度斷言和反響引用。所謂寬度斷言就是可以判斷后面/前面的匹配,但是不占用匹配的位置,也就是不影響后面的匹配,他只是一種斷言,比如上面的(?=reg),就是正向寬度斷言,能斷言后面的出現了之前匹配組內容。反向引用時指可以引用之前匹配的引用組,比如上面的去除重復中的正則\1 就反向應用了第一個匹配組((\,[^\,]+)|(^[^\,]+)) 匹配的內容。

    當然,上面的正則肯定不是最優的,希望大家指點了。

    可以參考正則表達式30分鐘教程
    正則的寬度斷言 http://deerchao.net/tutorials/regex/regex.htm#lookaround
    負向寬度斷言&反向引用:http://deerchao.net/tutorials/regex/regex.htm#negativelookaround



    posted on 2011-06-17 12:16 衡鋒 閱讀(861) 評論(3)  編輯  收藏 所屬分類: javascript

    評論

    # re: 使用正則替換textarea種的重復行 2011-06-17 20:48 bility

    It's very good.

    but,if this code appear in your project,I think this will driving someone mad.  回復  更多評論   

    # re: 使用正則替換textarea種的重復行 2011-06-17 22:19 陽衡鋒

    @bility
    可能正則并不適合于寫業務代碼??勺x性,可維護性比較差。  回復  更多評論   

    # re: 使用正則替換textarea種的重復行 2011-09-15 08:34 tbw

    非常不錯啊   回復  更多評論   

    主站蜘蛛池模板: 日韩毛片一区视频免费| 成人毛片免费观看视频在线| 亚洲精品国产首次亮相| 久久亚洲国产最新网站| 亚洲AV无码国产剧情| 一本大道一卡二大卡三卡免费| 成年免费a级毛片免费看无码| 特级做A爰片毛片免费看无码| 久久ww精品w免费人成| 精品剧情v国产在免费线观看| 国产a不卡片精品免费观看| 国产亚洲精品无码拍拍拍色欲| 亚洲天天做日日做天天欢毛片| 在线aⅴ亚洲中文字幕| 二区久久国产乱子伦免费精品| 亚洲综合色视频在线观看| 亚洲一区二区三区高清视频| 特级aa**毛片免费观看| 四虎在线成人免费网站| 日韩电影免费在线| 亚洲美女视频一区| 成人亚洲国产精品久久| 7x7x7x免费在线观看| 亚洲最大在线视频| 日本高清免费观看| 国产国产人免费人成免费视频| 亚洲黄色免费在线观看| 在线a级毛片免费视频| 国产亚洲无线码一区二区| 亚洲色大成网站www永久网站| 国产午夜免费秋霞影院| 国产特黄一级一片免费| 免费国内精品久久久久影院| 亚洲AV无码乱码在线观看代蜜桃| 日本不卡免费新一二三区| 在线观看免费视频一区| 亚洲一区二区三区久久久久| 亚洲?V乱码久久精品蜜桃| 亚洲国产中文在线二区三区免| 麻豆精品成人免费国产片| 亚洲自偷自偷图片|