2011-03-28 80 views
3

如何檢查變量是否包含在python中的DNS名稱或IP地址?python:檢查IP或DNS

+0

可能重複http://stackoverflow.com/q/3462784/280730 – 2011-03-28 15:39:00

+0

和http://stackoverflow.com/q/319279/280730 [正則表達式匹配的主機名或IP地址的 – 2011-03-28 15:39:50

+0

可能重複? ](http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address) – 2011-03-28 15:42:38

回答

6

您可以使用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

0
print 'ip' if s.split('.')[-1].isdigit() else 'domain name' 

這並不驗證任何一個是否格式良好。

8

這將工作。

import socket 
host = "localhost" 
if socket.gethostbyname(host) == host: 
    print "It's an IP" 
else: 
    print "It's a host name"