ES5 —— RegExp

RegExp 對象

生成一個 RegExp 對象有三種方式,字面量,構造函數均可以:正則表達式

// 字面量
var newExp1 = /pattern/ flags;
// 構造函數
var newExp2 = new RegExp(pattern [, flags]);

字面量方式參數沒必要添加引號,而構造函數方式,參數加引號。數組

其中,pattern 爲正則表達式文本,flags 表明標誌,常見的標誌有:函數

g 全局匹配
i 忽略大小寫
m 多行
u Unicode
y 粘性匹配; 僅匹配目標字符串中此正則表達式的lastIndex屬性指示的索引(而且不嘗試從任何後續的索引匹配)

正則表達式中特殊字符的含義

字符類別

  1. 「 . 」 點號,小數點,匹配任意單個字符(但行結束符 \n \r \u2028 \u2029 除外),要注意的是在字符集中,點( . )失去其特殊含義,並匹配一個字面點( . )。多行製表符中能夠使用 「[^]」 來匹配任意字符。prototype

  2. \d 匹配任意數字,至關於 [0-9]
  3. \D 匹配任意非數字,至關於 [^0-9]
  4. \w 匹配任意來自基本拉丁字母表中的字母數字字符,至關於 [A-Za-z0-9]
  5. \W 匹配任意不是基本拉丁字母表中單詞,至關於[^A-Za-z0-9]
  6. \s 包括空格、製表符、換頁符、換行符和其餘 Unicode 空格
  7. \S 匹配一個非空白符。
  8. \t 水平製表符(tab)
  9. \r 回車符
  10. \n 換行符
  11. [\b] 退格符code

字符集合

  1. [XYZ] 一個字符集合,匹配集合中的任意‘一個’字符,也能夠使用[A-Z]的模式
  2. [^XYZ]匹配任意不在括號內的字符,同理,也能夠使用[^A-Z]的模式

邊界

  1. 「^」 匹配輸入開始 /^A/
  2. 「$」 匹配輸入結束 /Z$/
  3. 「\b」 匹配一個零寬單詞邊界 如 /\bno/ 匹配 at noon 中的 "no" , 用法 /\bA/,/A\b/
  4. 「\B」 匹配一個零寬非單詞邊界

數量詞

  1. A* 匹配0次或者屢次
  2. A+ 匹配至少一次或者屢次
  3. A?,A+? 最小可能匹配,例如,/".?"/ 匹配 '"foo" "bar"' 中的 '"foo"',而 * 後面沒有 ? 時匹配 '"foo" "bar"'。
  4. A? 匹配前面的模式 x 0 或 1 次。例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。
  5. x(?=y)只有當 x 後面緊跟着 y 時,才匹配 x。
  6. x(?!y)只有當 x 後面不是緊跟着 y 時,匹配 x 。
  7. x|y 匹配 x 或 y
  8. x{n} n 是一個正整數。前面的模式 x 連續出現 n 次時匹配。
  9. x{n,} n 是一個正整數。前面的模式 x 連至少連續出現 n 次時匹配。
  10. x{n,m} n 和 m 爲正整數。前面的模式 x 連續出現至少 n 次,至多 m 次時匹配。

分組

  1. (x) 匹配 x 而且捕獲匹配項
  2. \n n是一個正整數。一個反向引用(back reference),指向正則表達式中第 n 個括號(從左開始數)中匹配的子字符串。
  3. (?:x) 匹配 x 不會捕獲匹配項。這被稱爲非捕獲括號(non-capturing parentheses)。匹配項不可以從結果數組的元素 [1], ..., [n] 或已被定義的 RegExp 對象的屬性 $1, ..., $9 再次訪問到。

RegExp 經常使用方法

  1. RegExp.prototype.exec(str) 匹配字符串,返回數組
  2. RegExp.prototype.test(str) 匹配字符串,返回布爾值
  3. RegExp.prototype.toString() 無輸入參數,返回對象字面量的字符串形式

具體的參見MDNregexp

相關文章
相關標籤/搜索