RegExp 對象
生成一個 RegExp 對象有三種方式,字面量,構造函數均可以:正則表達式
// 字面量
var newExp1 = /pattern/ flags;
// 構造函數
var newExp2 = new RegExp(pattern [, flags]);
字面量方式參數沒必要添加引號,而構造函數方式,參數加引號。數組
其中,pattern 爲正則表達式文本,flags 表明標誌,常見的標誌有:函數
g 全局匹配
i 忽略大小寫
m 多行
u Unicode
y 粘性匹配; 僅匹配目標字符串中此正則表達式的lastIndex屬性指示的索引(而且不嘗試從任何後續的索引匹配)
正則表達式中特殊字符的含義
字符類別
「 . 」 點號,小數點,匹配任意單個字符(但行結束符 \n \r \u2028 \u2029 除外),要注意的是在字符集中,點( . )失去其特殊含義,並匹配一個字面點( . )。多行製表符中能夠使用 「[^]」 來匹配任意字符。prototype
- \d 匹配任意數字,至關於 [0-9]
- \D 匹配任意非數字,至關於 [^0-9]
- \w 匹配任意來自基本拉丁字母表中的字母數字字符,至關於 [A-Za-z0-9]
- \W 匹配任意不是基本拉丁字母表中單詞,至關於[^A-Za-z0-9]
- \s 包括空格、製表符、換頁符、換行符和其餘 Unicode 空格
- \S 匹配一個非空白符。
- \t 水平製表符(tab)
- \r 回車符
- \n 換行符
[\b] 退格符code
字符集合
- [XYZ] 一個字符集合,匹配集合中的任意‘一個’字符,也能夠使用[A-Z]的模式
- [^XYZ]匹配任意不在括號內的字符,同理,也能夠使用[^A-Z]的模式
邊界
- 「^」 匹配輸入開始 /^A/
- 「$」 匹配輸入結束 /Z$/
- 「\b」 匹配一個零寬單詞邊界 如 /\bno/ 匹配 at noon 中的 "no" , 用法 /\bA/,/A\b/
- 「\B」 匹配一個零寬非單詞邊界
數量詞
- A* 匹配0次或者屢次
- A+ 匹配至少一次或者屢次
- A?,A+? 最小可能匹配,例如,/".?"/ 匹配 '"foo" "bar"' 中的 '"foo"',而 * 後面沒有 ? 時匹配 '"foo" "bar"'。
- A? 匹配前面的模式 x 0 或 1 次。例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。
- x(?=y)只有當 x 後面緊跟着 y 時,才匹配 x。
- x(?!y)只有當 x 後面不是緊跟着 y 時,匹配 x 。
- x|y 匹配 x 或 y
- x{n} n 是一個正整數。前面的模式 x 連續出現 n 次時匹配。
- x{n,} n 是一個正整數。前面的模式 x 連至少連續出現 n 次時匹配。
- x{n,m} n 和 m 爲正整數。前面的模式 x 連續出現至少 n 次,至多 m 次時匹配。
分組
- (x) 匹配 x 而且捕獲匹配項
- \n n是一個正整數。一個反向引用(back reference),指向正則表達式中第 n 個括號(從左開始數)中匹配的子字符串。
- (?:x) 匹配 x 不會捕獲匹配項。這被稱爲非捕獲括號(non-capturing parentheses)。匹配項不可以從結果數組的元素 [1], ..., [n] 或已被定義的 RegExp 對象的屬性 $1, ..., $9 再次訪問到。
RegExp 經常使用方法
- RegExp.prototype.exec(str) 匹配字符串,返回數組
- RegExp.prototype.test(str) 匹配字符串,返回布爾值
- RegExp.prototype.toString() 無輸入參數,返回對象字面量的字符串形式
具體的參見MDN。regexp