在PHP中怎麼用Regex驗證IP地址
來源:互聯網
上載者:User
在PHP中如何用Regex驗證IP地址
IP地址,可能都比較熟悉吧,就是由0-255間的數字,並由 . 隔開組成的。定義非常簡單,而用Regex檢驗,同樣也非常簡單。
下面,我們來看看Regex是如何表示的:
/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/
這就是表示IP地址的Regex,別嚇跑了。下面我們來詳細說一下他是如何表示的。首先,我要說明的是開始和結尾的“/”是定界符,不代表什麼,而 \A 和 \Z 分別代表開始和結尾,接下來,我們把中間的部分拆成兩段,((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3},這是第一段,我們用不同的顏色標出了圓括弧的對應位置。最後的{3}表示最紅括弧裡的內容出現3次。而藍色括弧裡的就是表示每一位元字的表示。\. 表示 . 號本身,也就是前三個數字後有點號。現在我們分析最關鍵的地方,如何表示0-255這些數字。即藍色括弧裡的內容。
這些數字可能是一位,兩位或三位,我們用符號(|)來表示,當一位或兩位時,請看第一個([0-9]?[0-9]) ,問號表示出現0次或1次,這就代表了0-99之間的數字。當數字為三位元時,我們又分三種情況,1-199:我們表示為(1[0-9]{2}),200-249:我們表示為(2[0-4][0-9]),250-255:我們表示為(25[0-5])。這四種能匹配任何一種,都是0-255的範圍內,整個前部分的意思就是由三個0-255的數字加小數點組成。後一部分就不用說了,就是前面數字部分的複製。只表示一個數字。現在把它整理成為一個函數。以供參考:
function checkipaddres ($ipaddres) {
$preg="/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
if(preg_match($preg,$ipaddres))return true;
return false;
}