2013-11-22 294 views
-5

我需要編寫一個腳本,輸出一個聲明一個IP是有效還是無效的語句。驗證IP地址 - python

IP地址由四個字節組成(每個字節的有效範圍爲0-255)。

有效例子:127.0.0.1,123.244.100.1等

無效的例子:124,44,2,2,127.0.2,4,355.23.24.43等

我米猜測最簡單的方法是使用正則表達式?但我遇到了一些麻煩。

我也想過使用split(),但我不知道如何處理其他不是「。」的特殊字符。

任何幫助或建議將是巨大的,感謝

+5

由於當123.444.333.1有效的IP? – Tim

+0

哎呦固定,... – user2755244

+1

期待您的ipv6地址的正則表達式......爲什麼不使用庫? –

回答

3
>>> import socket 
>>> socket.inet_aton("127.0.0.1") # valid 
'\x7f\x00\x00\x01' 
>>> socket.inet_aton("127.1")  # oh yes this is valid too! 
'\x7f\x00\x00\x01' 
>>> socket.inet_aton("127.0.0,1") # this isn't 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
socket.error: illegal IP address string passed to inet_aton 

來測試有效的IPv6地址可以使用

>>> socket.inet_pton(socket.AF_INET6, "2001:db8:1234::") 
b' \x01\r\xb8\x124\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 
+0

謝謝,這工作! – user2755244