Regex(二)

來源:互聯網
上載者:User

     一、字元類

      概念: 將單獨的直接量字元放進方括弧內就可以組合成字元類(character class)。

      註:紅色表示不是特別清楚的

      [...]  ——表示字元類中任意一個字元都滿足

     

      [^...]——除字元類中的任意一個字元都滿足

      .——除分行符號(\n)和Unicode終止符之外的任一字元(不知道有什麼用?)

      \w——(word)任何ASCII單字字元,==[a-zA-Z0-9]

      \W——任何非ASCII單字字元,==[^a-zA-Z0-9]

      \s ——(space)任何Unicode空白字元

      \S——任何非Unicode空白字元

      \d——任何ASCII數字,等價於[0-9]

      \D——除了ASCII數字,==[^0-9]

      [\b]——退格直接量(不知道有什麼用?)

 

      二、重複

      重複還有:{n,m},{n,},{n},?,+,*不一一解釋

      註:重複是匹配前一模式的一個或多個副本

     

     三、非貪婪的重複(看是明白一點,做了實驗後不明白了!)  

var s = "aaaaabab";
var tanlan = /a*b/
;
var landu = /a*?b/
;
var t =
 s.match(tanlan);   //本以為t:aaaaabab,l:aaaaab
var l = s.match(landu);   //這兩個匹配出來的數組居然是一樣的

 

     四、選擇、分組和引用

     |:選擇

     匹配符號從左至右的運算式(匹配一個後不會再往後走了)

var regChoose = /\d{2}|\w{4}/;   //要麼兩位小數,要麼四個小寫字母,匹配第一個就不匹配第二個

 

    ():組合

      作用一:將單獨的公事包成子運算式     

 var regCombination = /(菜鳥吃蟲)+蟲吃菜/  //“菜鳥吃蟲”一定要出現一次或更多次

 

    作用二:取出字串,以後匹配

     匹配左右的冒號相同    

  var regMarks = new RegExp("([\'\"])[^\' \"]*\\1");  //匹配左右冒號一致,但有個問題:"中文的引號如何  表示,用ASCII碼嗎"

   

    (?:...):組合,將公事包到一個單元,但不記憶與該組匹配的字元

      不進行詳解

 

     \n:與第n個分組第一次匹配的字元進行匹配

     不進行詳解

  

     五、指定匹配的位置

      待續...

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.