python:检查IP或DNS
答
您可以使用Python的re模块来检查变量的内容是否为IP地址。 IP地址为
举例:
import re
my_ip = "192.168.1.1"
is_valid = re.match("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", my_ip)
if is_valid:
print "%s is a valid ip address" % my_ip
例如,对于主机名:
import re
my_hostname = "testhostname"
is_valid = re.match("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$", my_hostname)
if is_valid:
print "%s is a valid hostname" % my_hostname
+1
IPv6如何? – Sardathrion 2012-07-20 09:22:04
+1
http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python/4017219#4017219 – 2012-07-20 09:54:44
答
我想看看这个SO问题的答案:
Regular expression to match DNS hostname or IP Address?
主要的一点是把这两个正则表达式和它们放在一起来获得desi红色的结果。
答
print 'ip' if s.split('.')[-1].isdigit() else 'domain name'
这并不验证任何一个是否格式良好。
答
这将工作。
import socket
host = "localhost"
if socket.gethostbyname(host) == host:
print "It's an IP"
else:
print "It's a host name"
可能重复http://stackoverflow.com/q/3462784/280730 – 2011-03-28 15:39:00
和http://stackoverflow.com/q/319279/280730 [正则表达式匹配的主机名或IP地址的 – 2011-03-28 15:39:50
可能重复? ](http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address) – 2011-03-28 15:42:38