一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

學(xué)習(xí)js正則

 我依然125 2010-11-10
很長時間沒看 正則表達(dá)式了,碰巧今天用到,溫故知新了一把 看書學(xué)習(xí)吧。
原來在無憂發(fā)過初學(xué)者正則,現(xiàn)在補充了分組提供了下載 完善下。

一 javascript正則表達(dá)式的基本知識

1     javascript 正則對象創(chuàng)建 和用法

聲明javascript 正則表達(dá)式

    var reCat = new RegExp("cat");
   你也可以
    var reCat = /cat/;    //Perl 風(fēng)格 (推薦)

2 學(xué)習(xí)最常用的 test exec match search   replace   split 6個方法

1) test   檢查指定的字符串是否存在

   var data = "123123";
   var reCat = /123/gi;
   alert(reCat.test(data));   //true
   
   //檢查字符是否存在   g 繼續(xù)往下走   i 不區(qū)分大小寫

2) exec 返回查詢值

   var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
   var reCat = /cat/i;
   alert(reCat.exec(data));   //Cat

    3)match   得到查詢數(shù)組

   var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
   var reCat = /cat/gi;
   var arrMactches = data.match(reCat)

   for (var i=0;i < arrMactches.length ; i++)
   {
         alert(arrMactches[i]); //Cat   cat
   }

    4) search   返回搜索位置   類似于indexof

   var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
   var reCat = /cat/gi;
   alert(data.search(reCat));   //23


5) replace   替換字符   利用正則替換

   var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
   var reCat = /cat/gi;
   alert(data.replace(reCat,"libinqq"));

6)split 利用正則分割數(shù)組

   var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
   var reCat = /\,/;
   var arrdata = data.split(reCat);

   for (var i = 0; i < arrdata.length; i++)
   {
         alert(arrdata[i]);
   }

3   學(xué)習(xí)下   簡單類 負(fù)向類   范圍類   組合類

//簡單類
   var data = "1libinqq,2libinqq,3libinqq,4libinqq";
   var reCat = /[123]libinqq/gi;
   var arrdata = data.match(reCat);

   for (var i = 0; i < arrdata.length; i++)
   {
         alert(arrdata[i]);   // 1libinqq 2libinqq   3libinqq
   }

   //負(fù)向類
   var data = "alibinqq,1libinqq,2libinqq,3libinqq,4libinqq";   //\u0062cf
   var reCat = /[^a123]libinqq/gi;
   var arrdata = data.match(reCat);

   for (var i = 0; i < arrdata.length; i++)
   {
         alert(arrdata[i]);   //4libinqq
   }

   //范圍類
   var data = "libinqq1,libinqq2,libinqq3,libinqq4,libinqq5";   //\u0062cf
   var reCat = /libinqq[2-3]/gi;
   var arrdata = data.match(reCat);

   for (var i = 0; i < arrdata.length; i++)
   {
         alert(arrdata[i]); // libinqq2   libinqq3
   }

   //組合類
   var data = "a,b,c,w,1,2,3,5";   //\u0062cf
   var reCat = /[a-q1-4\n]/gi;
   var arrdata = data.match(reCat);

   for (var i = 0; i < arrdata.length; i++)
   {
         alert(arrdata[i]);   // a b c 1 2 3
   }


   這些都是 js正則 最基本的使用方法,看不會的請復(fù)制到筆記本練習(xí)下,看會了再往下面看。

二   javascript   正則表達(dá)式是分組知識

1) 簡單分組
<script language="JavaScript"> <!-- /*正則表達(dá)式 簡單的分組舉例 我們要查找字符串 MouseMouse var reCat = /MouseMouse/gi; 盡管這是可以的,但是有點浪費。如果不知道Mouse 在字符串中到底出現(xiàn)幾次時該怎么辦,如果重復(fù)多次呢。 var reCat = /(mouse){2}/gi; 括號的意思列Mouse 將在一行連續(xù)出現(xiàn)2次。 */ var data = "Ah-mousemouse"; var reCat = /(mouse){2}/gi; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i++) { alert(arrdata[i]); } //--> </script>
提示:您可以先修改部分代碼再運行

2 復(fù)雜分組
<script language="JavaScript"> <!-- /*正則表達(dá)式 復(fù)雜的分組 ? 零次 或 一次 * 零次 或 多次 + 最少一次 或 多次 */ var data = "bb ba da bad dad aa "; var reCat = /([bd]ad?)/gi; // 匹配出 ba da bad dad var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i++) { alert(arrdata[i]); } // 同時 也不介意將分組放在分組中間 // var re = /(mom( and dad)?)/; 匹配出 mom 或 mon and daa //--> </script>
提示:您可以先修改部分代碼再運行

3 反向引用
<script language="JavaScript"> <!-- /*正則表達(dá)式 反向引用*/ var sToMatch = "#123456789"; var reNumbers = /#(\d+)/; reNumbers.test(sToMatch); alert(RegExp.$1); /* 這個例子嘗試匹配后面跟著幾個或多個數(shù)字的鎊符合,并對數(shù)字進(jìn)行分組以存儲他們。在調(diào)用 test 方法后,所有的反向引用都保存到了 RegExp 構(gòu)造函數(shù)中從 RegExp.$1(它保存了第一個反向引用)開始,如果還有第二個反向引用,就是 RegExp.$2,如果還有第三個反向引用存在,就是 RegExp.$3.依此類推。因為該組匹配了 “123456780”,所以 RegExp.$1 中就存儲了這個字符串。 */ var sToChange = "1234 5678"; var reMatch = /(\d{4}) (\d{4})/; var sNew = sToChange.replace(reMatch,"$2 $1"); alert(sNew); /* 在這個例子中,正則表達(dá)式有兩個分組,每一個分組有四個數(shù)字。在 replace() 方法的第二個參數(shù)中,$2 等同于 “5678” ,而 $1 等同于 “1234”,對應(yīng)于它們在表達(dá)式中的出現(xiàn)順序。 */ //--> </script>
提示:您可以先修改部分代碼再運行

4 候選
<script language="JavaScript"> <!-- /*正則表達(dá)式 候選 */ var sToMatch1 = "red"; var sToMatch2 = "black"; var reRed = /red/; var reBlack = /black/; alert(reRed.test(sToMatch1) || reBlack.test(sToMatch1)); alert(reRed.test(sToMatch2) || reBlack.test(sToMatch2)); /* 這雖然能完成任務(wù),但是十分沉長,還有另一種方式就是正則表達(dá)式的候選操作符。 */ var sToMatch1 = "red"; var sToMatch2 = "black"; var reRedOrBlack = /(red|black)/; alert(reRedOrBlack.test(sToMatch1)); alert(reRedOrBlack.test(sToMatch2)); //--> </script>
提示:您可以先修改部分代碼再運行

5   非捕獲性分組
<script language="JavaScript"> <!-- /*正則表達(dá)式 非捕獲性分組如果要創(chuàng)建一個非捕獲性分組,只要在左括號的后面加上一個問號和一個緊跟的冒號: */ var sToMatch = "#123456789"; var reNumbers = /#(?:\d+)/; reNumbers.test(sToMatch); alert(RegExp.$1); /* 這個例子的最后一行代碼輸出一個空字符串,因為該組是非捕獲性的, */ var sToMatch = "#123456789"; var reNumbers = /#(?:\d+)/; alert(sToMatch.replace(reNumbers,"abcd$1")); /* 正因如此,replace()方法就不能通過 RegExp.$x 變量來使用任何反向引用,這段代碼輸出的“abcd$1”而不是abcd123456789, 因為$1 在這里并不被看成是一個反向引用。 */ //--> </script>
提示:您可以先修改部分代碼再運行

6 前瞻
<script language="JavaScript"> <!-- /*正則表達(dá)式 前瞻前瞻 就和它名字一樣,它告訴正則表達(dá)式運算器向前看一些字符而不是移動位置 */ var sToMatch1 = "bedroom"; var sToMatch2 = "bedding"; var reBed = /bed(?=room)/; alert(reBed.test(sToMatch1)); //true alert(reBed.test(sToMatch2)); //false //負(fù)向前瞻 var sToMatch1 = "bedroom"; var sToMatch2 = "bedding"; var reBed = /bed(?!room)/; alert(reBed.test(sToMatch1)); //false alert(reBed.test(sToMatch2)); //true //--> </script>
提示:您可以先修改部分代碼再運行

7 邊界
<script language="JavaScript"> <!-- /*正則表達(dá)式 邊界 ^ 行開頭 $ 行結(jié)尾 \b 單詞的邊界 \B 非單詞的邊界 */ var sToMatch = "Important word is the last one."; var reLastWord = /(\w+)\.$/; reLastWord.test(sToMatch); alert(RegExp.$1); //one /* 假如想查找一個單詞,但要它只出現(xiàn)在行尾,則可以使用美元符號 ($)來表示它: */ var sToMatch = "Important word is the last one."; var reLastWord = /^(\w+)/; reLastWord.test(sToMatch); alert(RegExp.$1); //Important /* 在這個例子中,正則表達(dá)式查找行起始位置后的一個或多個單詞字符。如果遇到非單詞字符匹配停止,返回 Important。 這個例子也可以用單詞邊界實現(xiàn)。 */ var sToMatch = "Important word is the last one."; var reLastWord = /^(.+?)\b/; reLastWord.test(sToMatch); alert(RegExp.$1); //Important /* 這里,正則表達(dá)式用惰性量詞來制定在單詞邊界之前可以出現(xiàn)任何字符,且可以出現(xiàn)一次或多次(如果使用貪婪性量詞,表達(dá)式就匹配整個字符串)。 */ var data = " First second thind fourth fifth sixth "; var reCat = /\b(\S+?)\b/g; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i++) { alert(arrdata[i]); } /* 使用單詞邊界可以方便地從字符串中抽取單詞。 */ //--> </script>
提示:您可以先修改部分代碼再運行

8 多行模式
<script language="JavaScript"> <!-- /*正則表達(dá)式 多行模式要制定多行模式,只要在正則表達(dá)式想要匹配的行末的一個單詞 */ var data = " First second\n thind fourth\n fifth sixth"; var reCat = /(\w+)$/g; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i++) { alert(arrdata[i]); } /* 上面只返回一個單詞 sixth,因為換行符阻擋了匹配,只能匹配行末的一個單詞,當(dāng)然也可以使用 split() 方法將字符串分割成數(shù)組,但就得對每一行進(jìn)行單獨匹配。以前不好好看書經(jīng)常半吊子,看一半就仍了,導(dǎo)致用了好多 split, 其實很簡單如下面例子 只需要 m 參數(shù)進(jìn)行多行匹配。 */ var data = " First second\n thind fourth\n fifth sixth"; var reCat = /(\w+)$/gm; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i++) { alert(arrdata[i]); } //--> </script>
提示:您可以先修改部分代碼再運行

至此結(jié)束,這些都是 javascript 正則表達(dá)式的基本方法,如果你看會了看復(fù)雜的正則你會有豁然開朗的感覺。

另外 我知道有些人很懶(包括我),所以正則分組的例子的我特此打包歡迎下載學(xué)習(xí)  js正則分組

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产乱久久亚洲国产精品| 好吊日视频这里都是精品| 欧美日韩三区在线观看| 污污黄黄的成年亚洲毛片| 亚洲少妇人妻一区二区| 九九久久精品久久久精品| 欧美三级不卡在线观线看| 丰满人妻一二三区av| 厕所偷拍一区二区三区视频| 九九热精品视频免费观看| 国产欧美日韩精品一区二区| 久七久精品视频黄色的| 国产午夜福利不卡片在线观看| 午夜精品一区二区三区国产| 色丁香一区二区黑人巨大| 欧美六区视频在线观看| 欧美一级黄片免费视频| 国产成人人人97超碰熟女| 亚洲av又爽又色又色| 国产午夜精品福利免费不| 久久香蕉综合网精品视频| 亚洲国产精品久久综合网| 绝望的校花花间淫事2| 黄色激情视频中文字幕| 日韩免费午夜福利视频| 亚洲欧美日本成人在线| 国产一级不卡视频在线观看| 肥白女人日韩中文视频 | 99福利一区二区视频| 在线观看免费无遮挡大尺度视频| 中文字幕亚洲精品在线播放| 日韩欧美亚洲综合在线| 好吊日在线视频免费观看| 久久亚洲国产视频三级黄| 亚洲男人的天堂就去爱| 亚洲少妇一区二区三区懂色| 国产精品一区二区成人在线| 日本中文在线不卡视频| 经典欧美熟女激情综合网| 国产成人精品午夜福利av免费| 亚洲精品偷拍一区二区三区|