1. 程式人生 > >es6學習3:正則梳理

es6學習3:正則梳理

前言:  

  理解正則, 大致從這幾個方面

  [ 1: 建立形式  2: 元字元和轉義字元  3:  數詞量詞  4:  分組  5: 修飾符  6: 附加功能 

一、建立形式

// case 1:
var reg1 = /a/g;
// case 2:
var reg2 = new RegExp(/a/g);
// case 3:
let reg3 = new RegExp(/a/,'g'); // es6專用

二、元字元和轉義字元 (如果為了理解看本文請不要去記這些瑣碎的固定知識點)

  .................元字元.................

  \t  => tab 水平製表符

  \v => 垂直製表符 (不太清除幹嘛用的, 有研究的朋友可以回覆下~)

  \n => 換行

  \r  => 回車換行符 (不太請拿出\r\n的區別, 只知道linux和windows下有些差異, 並且\r是相當於敲了了個回車, \n還記得html中中腫麼用的嘛~)

  \0 => 空字元 

  \f  => 換頁  (沒用到過)

  \cx =>對應ctrl+x (沒用到過)

   .................常見轉義字元.................

  

三、數詞量詞

  正則的使用經常伴隨著如下模式 / (數詞)(量詞) / (修飾)  如 var reg =  /a{5}/gi;

  .................數詞.................

  case 預定義型別:

    \w   => 匹配字母或數字或下劃線或漢字 等價於 '[^A-Za-z0-9_]'。

    \s   => 空格

    \d   => [0-9]

    \u{xxxx} => 直接鍵入unicode編碼

  case 非預定義型別:

    /avenda/   => 對應avenda單詞 

    /1234/      => 對應1234

    /\.\\\?\-/     => 對應.\?-

  case 類物件 (佔一個位置, 內部為所有滿足條件的條件):

    [\dabc] => 數字或者abc

  case 非與或:

   (1 | 2 | 3) => 1或2或3 等同於[123]  //'或'一般結合分組使用

   [^\d] =>非數字  // '非'一般用於類物件中, 如果不是在類物件中則表示以xx開始

  case 條件斷言(跟在一個正則單元后面判斷是否滿足條件):

   (?= xxx)  例: 'AvendaAvenda2333'.replace(/avenda(?=\d)/ig,'X')  這裡是把後面為數字的avenda替換為X字母, i修飾符為忽略大小寫

  .................量詞.................

  量詞表達出現的數量, 跟在量詞後面做迴圈判定

    ? => 最多1次    例: /a?/ 最多出現一次a或者沒有

    + => 最少1次    例: /a+/ 至少出現1次

    * => 任意次數     例: /a*/

    {n} 出現n次      例: /a{3}/出現3次

    {n, m} 出現n到m次    例: /a{2,3}/出現2或3次

    {n, } 至少出現n次    例: /a{2,}/至少出現2次

    {0, n}  最多出現n此    例: /a{0,3}/最多出現3次

四、分組 ( '(xxx)' )

  為什麼要用分組?

  一個例子   

      let reg = /(^|&)age=([^&]*)($|&)/;

       reg.exec('name=avenda&age=15');

  結果: