閱讀Javascript高級程序設計第五章 -- RegExp類型總結html
對於基礎教程部分, 有小夥伴不熟悉的,能夠參考 正則表達式 - 教程正則表達式
1. 基礎部分回顧:express
ECMASript經過RegExp類型來支持正則表達式, 語法以下函數
var expression = / pattern /flags;
參數介紹: pattern部分能夠是如何簡單或複雜的正則表達式,能夠包含字符類,限定符,分組,向前查找以及反向引用. 每一個正則表達式均可以帶一個或多個flags,用以標明正則表達式的行爲.this
⭕️ g: 表示全局模式,即模式將被應用與全部字符串;spa
⭕️ i: 表示不區分大小寫模式;設計
⭕️ m: 表示多行模式, 即在到達一行文本末尾時還會繼續查找下一行中是否存在與模式匹配的項.3d
與其餘語言中的正則表達式相似, 模式中使用的全部元字符都必須轉移. 正則表達式中都元字符包括code
( [ { \ ^ & | ) ? * + . ] }
舉例說明: regexp
let pattern1 = /at/g; //匹配字符串中全部"at"實例 let pattern2 = /[bc]at/i; // 匹配第一個"bat"或"cat", 不區分大小寫 let pattern3 = /\[bc\]at/i; // 匹配第一個"[bc]at", 不區分大小寫 let pattern4 = /.at/gi; //匹配全部以"at"結尾的3個字符的組合,不區分大小寫 let pattern5 = /\.at/gi; // 匹配全部以".at",不區分大小寫
除以上字面量模式, 正則表達式還常採用構造函數new RegExp(pattern,flags)來定義正則表達式
let reg = new RegExp(pattern,flags);
二者是等價的
let pattern1 = /[bc]at/i; // 匹配第一個"bat"或"cat", 不區分大小寫 等價於 let pattern2 = new RegExp("[bc]at","i");
備註: 傳遞個RegExp構造函數的兩個參數都是字符串. 因爲RegExp構造函數的模式參數是字符串, 因此在某些狀況下要對字符串進行雙重轉義. 所以, 上面列舉對元字符都必須進行雙重轉義.
2. RegExp實例屬性
⭕️ global: 布爾值, 表示是否設置了g標誌
⭕️ ignoreCase: 布爾值, 表示是否設置了i標誌
⭕️ lastIndex: 整數, 表示開始搜索下一個匹配項的字符位置,從0算起
⭕️ multiline: 布爾值, 表示是否設置了m標誌
⭕️ source: 正則表達式字符串表示,按照字面量形式而非傳人構造函數中的字符串模式返回
舉例說明實例屬性各個性質
let p1 = /\[bc\]at/g; let p2 = new RegExp("\\[bc\\]at","g"); console.log(p1.global); // true console.log(p1.ignoreCase); // false console.log(p1.lastIndex); // 0 console.log(p1.multiline); // false console.log(p1.source); // "\[bc\]at" console.log(p2.source); // "\[bc\]at"
3 正則表達式實例方法
3.1 RegExp對象的主要方法之一是exec()
3.2
4 RegExp 構造函數屬性
RegExp構造函數包含一些屬性( 這些屬性在其餘語言中被當作是靜態屬性 ). 這些屬性適用於做用域中全部的正則表達式,而且基於所執行的最近一次正則表達式操做而變化, 這些屬性有一個長屬性名和短屬性名. 列表以下
舉例說明
let str = "this is number of wuhan i love you yyhan"; let reg = /(.)han/g; if(reg.test(str)){ console.log(RegExp.input); console.log(RegExp.$1); console.log(RegExp.lastMatch); console.log(RegExp.lastParen); console.log(RegExp.leftContext); console.log(RegExp.rightContext); console.log(RegExp.multiline); console.log(RegExp.name); } console.log("寫法 **********上 等價 下***********"); if(reg.test(str)){ console.log(RegExp.$_); console.log(RegExp.$1); console.log(RegExp["$&"]); console.log(RegExp["$+"]); console.log(RegExp["$`"]); console.log(RegExp["$'"]); console.log(RegExp["$*"]); console.log(RegExp.name); }
打印結果
this is number of wuhan i love you yyhan u uhan u this is number of w i love you yyhan undefined RegExp 寫法 **********上 等價 下*********** this is number of wuhan i love you yyhan y yhan y this is number of wuhan i love you y undefined RegExp