ip是由四段組成,每一段是0-255的數字,段與段之間用小數點隔開,比如192.168.1.1就是合法的ip位址。
如果正規表示式寫成d(.d)無疑是不負責的,因為它可以匹配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),因為在(***|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))
乙個完整的網域名稱,由根網域名稱、頂級域、二級、**……網域名稱構成,每級網域名稱之間用點分開,每級網域名稱由字母、數字和減號構成(第乙個字母不能是減號),不區分大小寫,長度不超過63個字元。
很顯然,單獨的名字可以由正規表示式[a-za-z0-9][-a-za-z0-9]來匹配,而完整的網域名稱至少包括兩個名字(比如google.com,由google和com構成),最後可以有乙個表示根域的點(在規範中,最後又乙個點的才是完整網域名稱,但一般認為包括兩個以上名字的網域名稱也是完整網域名稱,哪怕它後面沒有點)。
匹配完整網域名稱的正規表示式:
[a-za-z0-9][-a-za-z0-9](.[a-za-z0-9][-a-za-z0-9])+.?
正規表示式匹配ip位址
ipv4的ip位址都是 1 255 0 255 0 255 0 255 的格式 下面給出相對應的正規表示式 1 d 2 0 4 d 25 0 5 1 9 d 1 9 1 d 2 0 4 d 25 0 5 1 9 d d 1 d 2 0 4 d 25 0 5 1 9 d d 1 d 2 0 4 d 2...
python 正規表示式匹配ip
ipv4的ip正則匹配表示式 importre 簡單的匹配給定的字串是否是ip位址,下面的例子它不是ipv4的位址,但是它滿足正規表示式 if re.match r 0 9 0 9 272.168,1,1 print ip vaild else print ip invaild 精確的匹配給定的字串...
匹配IP字串 網域名稱的正規表示式
讀了幾頁 mastering regular expression 有心想寫乙個能夠匹配ip字串的正規表示式,實際嘗試發現遠沒有自己寫幾行 來判斷來得容易,呵呵。乙個ip字串,由四段組成,每一段是0 255的數字,段與段之間用小數點隔開,比如61.139.2.69就是乙個合法的ip字串。如果正規表示...