閒來無事,看了看新浪最近的面試題,其中關於正則的題目,讓自己意識到了這一塊的薄弱。
閒來無事,蒐集了很多資料(ps:三中全會這幾天,用google特慢,不得以用bd,不說了,你懂得,真實屌絲的百科全書,建議能用google就google),研究了一下正則。有一些小感觸,正則沒有你想象中那麼難,正則不是那麼簡單。
記得有位貴人告訴我,正則會了就不會忘。當時將信將疑。
怎麼看待正則?難,不難,很容易?對於正則,我想說:會了就不會忘。
很多同行,包括之前的自己。對於正則都是拿來主義,用到的時候,一搜就有。大體上能看懂,深究有不明白。就是那句話恰到好處——最熟悉的陌生人。
關於正則的基礎知識,就沒必要贅述,到處都是。
還是想跟大家分享兩篇,東西好嘛。PHP正則快速學習和正則入門。
這裏主要想說的是電子郵箱地址的正則匹配。
下面的寫法最常見:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/ ;
還有諸如:/^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;
/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/;
(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*;)*;
這些都只能滿足普通的要求,專門對比了一下幾個門戶的郵箱地址註冊規則,見下圖(騰訊的不太友好,輸入後纔有規則提示,沒有拿來):
差別真的很大,網上的很多也不滿足如寫的域名規則:
嘗試着寫的一個電子郵件驗證,希望大家拍磚:$preg = "/^[a-zA-Z0-9]+(\.\w+)*[^_]@[^-][a-zA-Z0-9-]+[^-]\.[^-][a-zA-Z0-9-]+[^-]$/ "
做爲一名工程師,要得就是專業,而正則就是專業性的體現。多花一點時間,深入鑽研,會了就不會忘。