2012年5月4日 星期五

正規表示法 (Regular Expression) 記錄

說明
^ : 在開頭表示後面的符號必須出現在字串的開頭
     寫在 pattern 中間則表示“不能”出現後面的符號
$ : 寫在 pattern 最後面時表示前一個符號必須出現在字串的尾端
     寫在其它地方則沒有意義
* : 表示字串中有 0 到無數個前一符號的內容
+ : 表示字串中有 1 到無數個前一符號的內容
? : 表示字串中有 0 到 1 個前一符號的內容
{} : 表示前一個符號在字串中的重覆次數
       如 /A{2}/ 表示 A 重覆二次, /A{2,5}/ 表示有 2 到 5 個 A
. : 表示任一字元
[] : 表示字串中有 [] 內的任一字元,可以用 - 來表示一組連續的字元
     如 /[0-9]/ 表示 0 到 9 中的任一數字皆符合, /[123]/ 則表示符合 1 或 2 或 3 其中一個
() : 表示一個 sub pattern
\ : 表示跳脫字元, 後面的字元會被視為一般字元
    如要表示 / 則必須寫成 \/ 才行
| : 表示前一符號或後一符號
\d : 表示任一數字,同 [0-9]
\D : 表示任一非數字,同 [^0-9]
\w : 表示任一字元,數字或 _
\W : 表示除 \w 代表的字元以外的字元
\s : 表示任一個空白符號,含 \t 等
\S : 表示任一個非空白的符號

範例
1. /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
    表示字串為 "(1到3個數字).(1到3個數字).(1到3個數字).(1到3個數字)" 的格式
2. /^[0-9a-fA-F]+$/
    表示字串由 9-0, a-f 及 A-F 組成