底下是 PHP 的 regular expression 語法整理,與 MySQL 的 regular expression 並不完全相同,要特別注意一下兩者的小差異。
pattern 用途 e* 符合零個以上的 e+ 符合零個以上的 e? 符合一個或零個的 {n} 用途和 MySQL 的語法一樣 {n,} 用途和 MySQL 的語法一樣 {n, m} 用途和 MySQL 的語法一樣 ^ 用途和 MySQL 的語法一樣 $ 用途和 MySQL 的語法一樣 . 任何字元,但不包含 '\n' | 用途和 MySQL 的語法一樣 [...] 用途和 MySQL 的語法一樣。PHP 也有類別用法,因此 "..." 也可以是類別常數,在後面會提到。
舉幾個例子:
ab*c → ac abbc abbbbbc 皆符合條件 ab+c → abbc abbbc abbbbbbbc 皆符合條件 ab?c → abc ac 皆符合條件
另外,PHP 也有類別的用法,如下表:
類別 符合類別的字元 alpha 0-9 與 a-zA-Z blank Space 與 Tab cntrl ASCII 0~ASCII 32 的控制字元 lower 所有的小寫字母 upper 所有的大寫字母 space Space Tab newline linefeed 與 formfeed characters xdigit 合法的十六進位數字
這裡所介紹的 PHP regular expression 與 regular expression 語法都是屬於 POSIX 1003.2 的標準。事實上,PHP 自 3.0.9 開始,就提供了 Perl 型式的 regular expression 函數,所使用的 regular expression 語法也都是屬於 Perl 的型式。熟悉 Perl 的讀者如果對這個主題有興趣,可以參考 PHP 的 Manual。
--jollen