| 為了找實習(xí)開始學(xué)習(xí)PHP,因為學(xué)過C和PERL,,所以練習(xí)了一個hello world后就開始伴隨著google用PHP做網(wǎng)頁了,,現(xiàn)在做個 幾個網(wǎng)站后,發(fā)現(xiàn)自己還沒有系統(tǒng)得學(xué)習(xí)過PHP,,于是找了本書開始從頭細致地學(xué)習(xí),。昨天看到正則,想和大家討論一下,。
校驗是正則用得最多的地方,,這是我一年前寫的EMAIL有效性校驗代碼:(見笑了,那時候是只知道正則的基本)
- function IsMailValid ( $mail ){
- $model = "(^[a-z])((([a-z0-9])*(\.|-|_)?){0,})@(([_a-z0-9-]{2,})\.){1,}([a-z]{2,4}$)";
- if (eregi($model, $mail)) {
- echo "[$mail] valide<br />";
- return true;
- }
- else{
- echo "[$mail] invalide<br />";
- return false;
- }
- }
復(fù)制代碼
當(dāng)時覺得能用就可以了,現(xiàn)在看來太低級,,就想按照書里的提示修正一下,。 書里是這樣寫的:^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$ 我能看懂這個正則,校驗的不是很好,但是比較簡明,我就想吸收過來改進我的代碼. 首先試驗了一下,,卻發(fā)現(xiàn)有warning,結(jié)果也不對. 研究了一下,發(fā)現(xiàn)是因為在方括號里寫了"\-"的關(guān)系,難道在方括號里"-"可以不用"\"? 如果去掉,代碼可以用,但是EMAIL里就不能用"-". 于是把"-"前的"\"去掉,正則是這樣 $model = "^[a-zA-Z0-9_-.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$"; 還是有warning,結(jié)果也錯誤.但是改成這樣 $model = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$"; 結(jié)果就完全正確了. 發(fā)現(xiàn)差別了么?就是把-放到方括號的最后,然后又進行了幾個試驗,一下幾種正則都正確. [a-zA-Z0-9_.-]+ [a-zA-Z0-9._-]+ [._a-zA-Z0-9-]+ [a-zA-Z0-9.-_]+ 這個正確,但是a<[email protected]也被校驗為正確 這個 [._a-zA-Z0-9\-]+ 也正確,但是a\[email protected]也被校驗為正確. 看來-放前放后還有講究呢
到此,第一步完畢,得到的經(jīng)驗: 正則中方括號里-不用加\,但是要放到最后,在圓括號中.加\不加\效果一樣,但是在方括號里不能加\ |
|
|