2013-11-22 74 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