php開發中經常用到的正則驗證

劉榮軒發表於2016-07-12

前言

在PHP開發程式的過程中,經常會有很多表達要處理,而驗證表單填寫資料的合法性則是必須要考慮到的事,防治無效的資料對資料庫造成影響。
關於正規表示式的語法,網上有很多教程和手冊,講的也很詳細,因為本人對正則的語法研究也不是很透徹,這裡就從我實際開發中常用到的正規表示式說起,貼出程式碼附上簡短的說明,大家可以參考,有什麼不對的地方歡迎指正、交流。

一些常用的正規表示式

1.驗證使用者名稱

preg_match("/^[0-9a-zA-Z_]{2,20}$/",$name)

這個正規表示式是要驗證由字母、數字、下劃線組成的2~20個字元之間的使用者名稱。 其中^ $分別代表匹配的字元的開始和結束位置。[ ]裡表示要匹配的表示式。{ }是限定符號,這裡限定要匹配的字串在2~20個字元之間。
這個正規表示式挺具有普遍性的,大家可以根據這個改自己需要的正規表示式。

2.驗證郵箱

preg_match("/^[w+.]+@w+.w+$/",$email)

w 和 [0-9a-zA-Z_]是等價的,表示匹配字母數字或者下劃線。+表示匹配前面子表示式一次或者多次。.就是匹配.這個字元。

3.驗證非負整數

preg_match("/^[1-9]*[0-9]+$/",$figure)

+表示匹配前面表示式一次或多次。*表示匹配前面表示式0次或多次。 驗證負整數在前面叫一個 -。

4.驗證浮點數

preg_match("/^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$/",$float)

|表示或。

5.驗證埠號

preg_match("/^([0-9]|[1-9]d|[1-9]d{2}|[1-9]d{3}|[1-5]d{4}|6[0-4]d{3}|65[0-4]d{2}|655[0-2]d|6553[0-5])$/",$port)

埠號的合法範圍是:1~65535。|表示或,d等價於[0-9]表示匹配一個數字字元。最後把65535按每位來匹配。

6.驗證域名

preg_match("/^((https?|ftp|news)://)?([a-z]([a-z0-9-]*[.。])+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(/[a-z0-9_-.~]+)*(/([a-z0-9_-.]*)(?[a-z0-9+_-.%=&]*)?)?(#[a-z][a-z0-9_]*)?$/",$domain)

這個域名的匹配有點長,但其中用到的也都是上面提到的那些符號可以完成的功能,就是看起來表示式比較長。

小結

這些都是我自己在開發過程中用過的正規表示式,但難免有的測試不到位,可能會有一些小錯誤導致在某些驗證方面有些缺陷,大家可以互相交流,今天先寫這些,日後有用到的再補充,也歡迎大家來補充。

相關文章