1。IP
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 | 1dd | 百位為1的三位數 |
200~249 | 2[0-4]d | 三位數,百位是2,十位是0~9 |
250~255 | 25[0-5] | 三位數,百位是2,十位是5,個位是0~5 |
寫成正則表達式,即:(d|([1-9]d)|(1dd)|(2[0-4]d)|(25[0-5])),但是這樣的正則表達式在匹配254這樣的字串時,會分別匹配2、5、4,得到3個匹配,達不到預期效果,正確做法是將次序顛倒為((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d),因為在(xxx|yyy)這種匹配行為中,是從左向右搜索的。
完整的正則表達式是:
((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d)(.((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d)){3} |
2。 域名
一個完整的域名,由根域、頂級域、二級、三級……域名構成,每級域名之間用點分開,每級域名由字母、數字和減號構成(第一個字母不能是減號),不區分大小寫,長度不超過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})+.?
新聞熱點
疑難解答