首頁 > web前端 > js教程 > 主體

怎樣用正規表示式匹配IP位址與域名

php中世界最好的语言
發布: 2018-01-08 11:25:36
原創
5617 人瀏覽過

我們知道,一個完整的域名,由根域、頂級域、二級、三級……域名構成,並且每級域名之間用點分開,而且每級域名由字母、數字和減號構成(第一個字母不能是減號),不區分大小寫,長度不超過63。

單獨的名字可以由正規表達式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}來匹配,而完整的域名至少包括兩個名字(比如google.com,由google和com構成),最後可以有一個表示根域的點(在規範中,最後有一個點的才是完整域名,但一般認為包括兩個以上名字的域名也是完整域名,即使它後面沒有點)。

符合完整網域的正規表示式

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
登入後複製

一個IP字串,由四段組成,每一段是0~255的數字,段與段之間用小數點隔開,例如61.139.2.69就是一個合法的IP字符串。

  如果正規表示式寫成\d{1,3}(\.\d{1,3}){3}無疑是不負責的,因為它可以符合300. 400.555.666這樣的非法IP字符串。

  要符合一個0~255之間的數,有幾種符合方式,以下是其中一種:

符合正規表示式說明

  0 ~9 \d 單一數字
  10~99 [1-9]\d 兩位數
  100~199 1\d\d 百位為1的三位數
  200~249 2[百位為1的三位數
  200~249 2[00 -4]\d 三位數,百位是2,十位是0~9

  250~255 25[0-5] 三位數,百位是2,十位是5,個位是0 ~5

  寫成正規表示式,即:(\d|([1-9]\d)|(1\d\d)|(2[0-4]\d)|(25 [0-5])),但是這樣的正規表示式在匹配254這樣的字串時,會分別匹配2、5、4,得到3個匹配,達不到預期效果,正確做法是將次序顛倒為((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d),因為在(xxx|yyy)這種匹配行為中,是從左向右搜尋
的。

  完整的正規表示式是:

 ((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)(\.((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)){3}
登入後複製
  按:

  象061這樣的高位為0的數是不能被匹配的。

因此,最上面(1. 部分)的寫法才是正確完整版的,(2. 部分)的寫法較為片面

相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

怎麼用正規表示式讓JavaScript的程式碼高亮

正規表示式表單驗證的實例介紹

怎麼用正規則配對電話號碼手機號碼和郵件信箱網址

####

以上是怎樣用正規表示式匹配IP位址與域名的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板