匹配 IP 地址與域名的正則表達(dá)式
一個完整的域名,由根域、頂級域、二級、三級……域名構(gòu)成,每級域名之間用點(diǎn)分開,每級域名由字母、數(shù)字和減號構(gòu)成(第一個字母不能是減號),不區(qū)分大小寫,長度不超過63。
單獨(dú)的名字可以由正則表達(dá)式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}來匹配,而完整的域名至少包括兩個名字(比如google.com,由google和com構(gòu)成),最后可以有一個表示根域的點(diǎn)(在規(guī)范中,最后有一個點(diǎn)的才是完整域名,但一般認(rèn)為包括兩個以上名字的域名也是完整域名,哪怕它后面沒有點(diǎn))。
匹配完整域名的正則表達(dá)式:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
一個IP字串,由四段組成,每一段是0~255的數(shù)字,段與段之間用小數(shù)點(diǎn)隔開,比如61.139.2.69就是一個合法的IP字串。
如果正則表達(dá)式寫成\d{1,3}(\.\d{1,3}){3}無疑是不負(fù)責(zé)的,因?yàn)樗梢云ヅ?00.400.555.666這樣的非法IP字串。
要匹配一個0~255之間的數(shù),有幾種匹配方式,下面是其中一種:
匹配 正則表達(dá)式 說明
0~9 \d 單個數(shù)字
10~99 [1-9]\d 兩位數(shù)
100~199 1\d\d 百位為1的三位數(shù)
200~249 2[0-4]\d 三位數(shù),百位是2,十位是0~9
250~255 25[0-5] 三位數(shù),百位是2,十位是5,個位是0~5
寫成正則表達(dá)式,即:(\d|([1-9]\d)|(1\d\d)|(2[0-4]\d)|(25[0-5])),但是這樣的正則表達(dá)式在匹配254這樣的字串時,會分別匹配2、5、4,得到3個匹配,達(dá)不到預(yù)期效果,正確做法是將次序顛倒為((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d),因?yàn)樵?xxx|yyy)這種匹配行為中,是從左向右搜索的。
完整的正則表達(dá)式是:
((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的數(shù)是不能被匹配的。
因此,最上面(1. 部分)的寫法才是正確完整版的,(2. 部分)的寫法較為片面
相關(guān)文章
詳解基于Linux下正則表達(dá)式(基本正則和擴(kuò)展正則命令使用實(shí)例)
正則表達(dá)式應(yīng)用廣泛,在絕大多數(shù)的編程語言都可以完美應(yīng)用,在Linux中,也有著極大的用處。 有興趣的可以了解一下。2017-01-01你不一定知道的關(guān)于JavaScript的正則表達(dá)式
關(guān)于JavaScript中的正則表達(dá)式——,你不一定知道也可能用不到,但說不定哪天就會遭遇的幾個事實(shí)【新增一個】2010-09-09js使用正則子表達(dá)式匹配首字母與尾字母相同單詞的方法
這篇文章主要介紹了js使用正則子表達(dá)式匹配首字母與尾字母相同單詞的方法,可實(shí)現(xiàn)將多行文本框中首位字母相同的單詞進(jìn)行匹配的功能,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01JS 密碼強(qiáng)度校驗(yàn)的正則表達(dá)式(簡單且好用)
最近在做一個通行證的項(xiàng)目,在項(xiàng)目中有這樣的需求,注冊模塊中輸入密碼需要顯示密碼強(qiáng)度,今天小編給大家分享JS 密碼強(qiáng)度校驗(yàn)的正則表達(dá)式,簡單好用,需要的朋友參考下2017-01-01