Regex - PHP 匹配內網IP地址的正則如何寫 ^192.168.[0-255]+.[0-255]$

來源:互聯網
上載者:User

正則

想用一條正則來匹配IP地址,這樣寫^192\.168\.[0-255]+\.[0-255]$但是是錯誤的!
正則 []不是可以限制 [0-9a-z] 卻無法限制 [0-255]

回複內容:

正則

想用一條正則來匹配IP地址,這樣寫^192\.168\.[0-255]+\.[0-255]$但是是錯誤的!
正則 []不是可以限制 [0-9a-z] 卻無法限制 [0-255]

服了
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);

==============編輯一下,答案跑題了,其實我本來就是想介紹一下這個函數=============

function isPrivateIP($ip) {    return !filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);}

    /**  * 判斷內網IP * * @param $ip * * @returns */public function isInternalIp($ip) {    $ip = ip2long($ip);    $net_a = ip2long('10.255.255.255') >> 24; //A類網預留ip的網路地址    $net_b = ip2long('172.31.255.255') >> 20; //B類網預留ip的網路地址    $net_c = ip2long('192.168.255.255') >> 16; //C類網預留ip的網路地址    return $ip >> 24 === $net_a || $ip >> 20 === $net_b || $ip >> 16 === $net_c;}   

$long = ip2long($ip)if ($long == -1 || $long === FALSE) {    echo 'Invalid IP, please try again';}else{    //if $long在你需要的範圍即可。}

25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9]

[0-9]可以,但是不能[0-10]。因為[]本身就是指的只匹配其中一個。長度只能為1.

……我很好奇你這個的應用情境。

  • IP地址需要配合子網路遮罩輔助確定是否屬於同一內網。
  • IP地址可能整體表示為一個十進位整數。如果本機裝有http伺服器,歡迎訪問http://2130706433/,有驚喜。
  • IPv6也是個問題。

正則不應當用於IP地址的詳細驗證。有很多問題用正則來解決就是求死之道。就比如正則匹配XML/JSON。我贊成用正則粗略的找出一個“可能是IP地址”的子串,但對於IP地址的進一步驗證,推薦題主該怎麼來就怎麼來。

例如如果僅應對一般格式的IPv4地址,其實建議匹配(?:(\d{1,3})\.)(\d{1,3}),篩出IP地址的四個數之後再另寫程式檢查之。

^192\.168\.1?[0-9]{1,2}\.1?[0-9]{1,2}$

可以用這個驗證: http://jex.im/regulex/#!embed=false&flags=&re=%5E(a%7Cb)*%3F%24

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.