閒來無事,看了看新浪最近的面試題,其中關於正則的題目,讓本身意識到了這一塊的薄弱。html
閒來無事,蒐集了不少資料(ps:三中全會這幾天,用google特慢,不得以用bd,不說了,你懂得,真實屌絲的百科全書,建議能用google就google),研究了一下正則。有一些小感觸,正則沒有你想象中那麼難,正則不是那麼簡單。面試
記得有位貴人告訴我,正則會了就不會忘。當時將信將疑。學習
怎麼看待正則?難,不難,很容易?對於正則,我想說:會了就不會忘。google
不少同行,包括以前的本身。對於正則都是拿來主義,用到的時候,一搜就有。大致上能看懂,深究有不明白。就是那句話恰到好處——最熟悉的陌生人。spa
關於正則的基礎知識,就不必贅述,處處都是。.net
仍是想跟你們分享兩篇,東西好嘛。PHP正則快速學習和正則入門。htm
這裏主要想說的是電子郵箱地址的正則匹配。get
下面的寫法最多見:/^[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-]+[^-]$/ "
作爲一名工程師,要得就是專業,而正則就是專業性的體現。多花一點時間,深刻鑽研,會了就不會忘。