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');
結果: