正規表達式

正規表達式(Regular Expression)
這對寫網頁的時候,做不定內容的字串做比對是很有效的一個工具。像是在驗證電子郵件地址是否合法的時候,這就是一個很方便的工具,高級一點的應用像是樣版系統的組合。但是你是否像我一樣,因為使用到的機會其實並不是很多,就常常遺忘了正規表達式要如何撰寫。但是php提供的函式說明並提供了十分十分詳細的英文解說對有一點點語文障礙的我來說很痛苦。但在php的官網看看有沒有好心人士做了詳細的解說,也是很簡單的解說。

原始版如下:http://tw2.php.net/manual/hk/ref.regex.php#19555

我大略的翻譯了一下:

^ 代表字串的開頭
$ 代表字串的結尾
n? 代表出現零次或一次字元的’n’
n* 代表出現零次或一次或多次的’n’
n+ 代表出現一次或多次’n’
n{2} 代表剛好兩次的’n’
n{2,} 代表出現兩次或超過兩次的’n’
n{2,4} 代表出現兩次到四次的’n’
. 代表任何一個字元
() 代表詞語分組
(.*) 代表零次或一次或多次的任一個字元,也就是任何東西啦
(n|a) 代表’n'或’a’
[1-6] 代表任何一個數字在 1到6 中間
代表任何一個小寫英文字母在 c到h 中間
[D-M] 代表任何一個大寫英文字母在 D到M 中間
[^a-z] 代表任何一個字元 除了 小寫英文字母a到z
[_4^a-zA-Z] 代表任何一個字元 可以是 _ 或 4 或 ^ 或 小寫英文字母a到z 或 大寫英文字母A到Z

? 和 + 和 * 和 {} 為計算數量的用法,可以接在一個字元後面 或 ()後面 或 []後面

裡面要特別注意的是 ^ 這個符號,如果在表達式最前面,代表者字串的開頭;如果在[]裡面且是在最前面,代表排除以後的字元;如果在[]裡面但不是在最前面,代表的就是^這個符號本身。
可以注意 ^ 與 [^a-z] 與 [_4^a-zA-z] 之間的差別

另外,php提供了兩種的正規表達式的函數群,分別為Regular Expression Functions (Perl-Compatible)和Regular Expression Functions (POSIX Extended)兩種,函數的外觀上分別是以preg和ereg(split)開頭。
一般而言會推薦使用preg開頭的,主要是因為他的處理速度比較快速。
不過目前我是使用ereg開頭的,因為我第一次需要使用正規表達式的時候是找到這函數啦!

發表迴響

*