一、簡單模式:
- 元字元: ( [ { \ ^ $ | ) ? * + . 使用這些元字元,都必須進行轉義。
- 特殊字元:\t \n \r \f \a \e \cX \b \v \0
- 字元類:測試字元的組合。
- 簡單類:要匹配字元a, b, c字元類應是[abc].
- 負向類:除了特定一些,想匹配所以字元。匹配除了a、b所有字元是[^ab].
- 範圍類:從a 到 z 應是[a-z].
- 組合類別:其他類組合而成的字元類。假設要匹配所以從a到z的字母以及從1到4的數字,以及一分行符號應是[a-m1-4\n].
- 預定義類:
. |
除了換行和斷行符號之外的任一字元 |
\d |
數字 |
\D |
非數字字元 |
\s |
空白字元 |
\S |
非空白字元 |
\w |
單詞字元 |
\W |
非單詞字元 |
4.量詞:可以指定特定模式出現的次數。
? |
出現0次或一次 |
* |
出現零次或多次(任意次) |
+ |
出現一次或多次(至少一次) |
{n} |
一定出現n次 |
{n,m} |
至少出現n次但不超過m次 |
{n,} |
至少出現n次 |
貪婪的:先匹配整個字串,如果沒有匹配,去掉最後字串的最後一個字元,並再次嘗試,依次。。
惰性的:現看字串中的第一個字串是不是匹配,如果不夠,就讀入下一個字串,再匹配。。。
支配量詞:只嘗試匹配整個字串。
貪婪 |
惰性 |
支配 |
描述 |
? |
?? |
?+ |
出現0次或一次 |
* |
*? |
*+ |
出現零次或多次(任意次) |
+ |
+? |
++ |
出現一次或多次(至少一次) |
{n} |
{n}? |
{n}+ |
一定出現n次 |
{n,m} |
{n,m}? |
{n,m}+ |
至少出現n次但不超過m次 |
{n,} |
{n,}? |
{n,}+ |
至少出現n次 |
二、複雜模式:
- 分組:"dogdog" -> /dog{2}/g
- 反向引用:分組都被存放一個特殊的地方以備將來使用,這些儲存在分組中的特殊值,我們稱之為反向引用。RegExp.$1
- 候選:同時匹配"red","black" 可以是/(red|black);
- 非捕獲性分組:建立反向引用的分組是捕獲性分組,而非捕獲性分組不建立反向引用。
- 前瞻:當某一個字元出現在令一個字元之前才去捕獲它。,建立正向前瞻要將模式放在(?=)如:/bed(?=room)/,負向前瞻放在(?!)之間。
- 邊界:行開頭:^ 行結尾:$ 單詞的邊界: \b 非單詞的邊界: \B 如:/(\w+)\.$/
- 多行模式:/(\w+)$/gm
三、理解RegExp對象:
- global: g表示
- ignorecase 用i表示
- lastindex:下次匹配從哪個字元開始
- multiline:用m表示
- source: Regex的元字元形式。
四、常用模式:
- 驗證日期:var reDate =/(?:[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/
- 電子郵件:var eEmail = /^(?:\W+\.?)*\w+@(?:\w+\.?)*\w+$/;