JS正則表達式規則

正則表達式對象的方法 

•test,返回一個 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在則返回 true,否則就返回 false。 
•exec,用正則表達式模式在字符串中運行查找,並返回包<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>含該查找結果的一個數組。 
•compile,把正則表達式編譯爲內部格式,從而執行得更快。 
正則表達式對象的屬性 

•source,返回正則表達式模式的文本的複本。只讀。 
•lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的開始位置。 
•$1...$9,返回九個在模式匹配期間找到的、最近保存的部分。只讀。 
•input ($_),返回執行規範表述查找的字符串。只讀。 
•lastMatch ($&),返回任何正則表達式搜索過程中的最後匹配的字符。只讀。 
•lastParen ($+),如果有的話,返回任何正則表達式查找過程中最後括的子匹配。只讀。 
•leftContext ($`),返回被查找的字符串中從字符串開始位置到最後匹配之前的位置之間的字符。只讀。 
•rightContext ($'),返回被搜索的字符串中從最後一個匹配位置開始到字符串結尾之間的字符。只讀。 
String對象一些和正則表達式相關的方法 

•match,找到一個或多個正則表達式的匹配。 
•replace,替換與正則表達式匹配的子串。 
•search,檢索與正則表達式相匹配的值。 
•split,把字符串分割爲字符串數組。 

 

 

 

字符    描述 
/n      換行符 
/r      回車符 
/t      製表符 
/f      換頁符(Tab) 
/cX     與X對應的控制字符 
/b      退格符(BackSpace) 
/v      垂直製表符 
/0      空字符("") 

字符類 ---〉簡單類,反向類,範圍類,組合類,預定義類 

 

 

下面是正則表達式中的預定義類 


代碼  等同於                  匹配 
.     IE下[^/n],其它[^/n/r]  匹配除換行符之外的任何一個字符 
/d    [0-9]                   匹配數字 
/D    [^0-9]                  匹配非數字字符 
/s    [ /n/r/t/f/x0B]         匹配一個空白字符 
/S    [^ /n/r/t/f/x0B]        匹配一個非空白字符 
/w    [a-zA-Z0-9_]            匹配字母數字和下劃線 
/W    [^a-zA-Z0-9_]           匹配除字母數字下劃線之外的字符 



量詞(下表量詞單個出現時皆是貪婪量詞) 

代碼  描述 
*     匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價於{0,}。 
+     匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。 
?     匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。 
{n}   n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。 
{n,}  n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。 
{n,m} m 和 n 均爲非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。劉, "o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。 


貪婪量詞與惰性量詞 

•用貪婪量詞進行匹配時,它首先會將整會字符串當成一個匹配,如果匹配的話就退出,如果不匹配,就截去最後一個字符進行匹配,如果不匹配,繼續將最後一個字符截去進行匹配,直到有匹配爲止。直到現在我們遇到的量詞都是貪婪量詞 
•用惰性量詞進行匹配時,它首先將第一個字符當成一個匹配,如果成功則退出,如果失敗,則測試前兩個字符,依些增加,直到遇到合適的匹配爲止 

惰性量詞僅僅在貪婪量詞後面加個"?"而已,如"a+"是貪婪匹配的,"a+?"則是惰性的 

 

構建一個驗證電子郵箱地址有效性的正則表達式。電子郵箱地址有效性要求(我們姑且這樣定義):用戶名只能包含字母數字以及下劃線,最少一位,最多25位,用戶名後面緊跟@,後面是域名,域名名稱要求只能包含字母數字和減號(-),並且不能以減號開頭或結尾,然後後面是域名後綴(可以有多個),域名後綴必須是點號連上2-4位英文字母 

 

 

 

 

一 javascript正則表達式的基本知識

1     javascript 正則對象創建 和用法

    聲明javascript 正則表達式
    
     var reCat = new RegExp("cat");
      你也可以 
     var reCat = /cat/;      //Perl 風格   (推薦)

2 學習最常用的 test exec match search  replace  split 6個方法

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

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

   2) exec 返回查詢值

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

     3)match  得到查詢數組

       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   利用正則分割數組

       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  學習下  簡單類   負向類  範圍類  組合類

    //簡單類
       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
       }

       //負向類
       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
       }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章