Open In App

Python program to validate an IP Address

Improve
Improve
Like Article
Like
Save
Share
Report

Prerequisite: Python Regex 

Given an IP address as input, write a Python program to check whether the given IP Address is Valid or not.

What is an IP (Internet Protocol) Address? 
Every computer connected to the Internet is identified by a unique four-part string, known as its Internet Protocol (IP) address. An IP address (version 4) consists of four numbers (each between 0 and 255) separated by periods. The format of an IP address is a 32-bit numeric address written as four decimal numbers (called octets) separated by periods; each number can be written as 0 to 255 (E.g. – 0.0.0.0 to 255.255.255.255).

Examples: 

Input:  192.168.0.1
Output: Valid Ip address

Input: 110.234.52.124
Output: Valid Ip address

Input: 666.1.2.2
Output: Invalid Ip address 
 
Input:25.99.208.255 
Output: Valid Ip address

In this program, we are using search() method of re module. 
re.search() : This method either returns None (if the pattern doesn’t match), or re.MatchObject that contains information about the matching part of the string. This method stops after the first match, so this is best suited for testing a regular expression more than extracting data. 

Let’s see the Python program to validate an IP address : 

Python3




# Python program to validate an Ip address
 
# re module provides support
# for regular expressions
import re
 
# Make a regular expression
# for validating an Ip-address
regex = "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"
 
 
     
# Define a function for
# validate an Ip address
def check(Ip):
 
    # pass the regular expression
    # and the string in search() method
    if(re.search(regex, Ip)):
        print("Valid Ip address")
         
    else:
        print("Invalid Ip address")
     
 
# Driver Code
if __name__ == '__main__' :
     
    # Enter the Ip address
    Ip = "192.168.0.1"
     
    # calling run function
    check(Ip)
 
    Ip = "110.234.52.124"
    check(Ip)
 
    Ip = "366.1.2.2"
    check(Ip)


Output: 

Valid Ip address
Valid Ip address
Invalid Ip address

 

Using the ipaddress module:
The ipaddress module in Python provides classes for working with IP addresses and networks. It can be used to check if a given IP address is valid by using the ip_address function and catching any exceptions that may be thrown.

Python3




import ipaddress
 
def check(ip):
    # Use the ip_address function from the ipaddress module to check if the input is a valid IP address
    try:
        ipaddress.ip_address(ip)
        print("Valid IP address")
    except ValueError:
        # If the input is not a valid IP address, catch the exception and print an error message
        print("Invalid IP address")
 
# Driver Code
if __name__ == '__main__':
    ip = "192.168.0.1"
    check(ip)
 
    ip = "110.234.52.124"
    check(ip)
 
    ip = "366.1.2.2"
    check(ip)
 
#This code is contributed by Edula Vinay Kumar Reddy


Output

Valid IP address
Valid IP address
Invalid IP address

Time complexity: O(1)
Auxiliary Space : O(1)

METHOD 3: Using the socket module: The socket module approach only checks if the IP address is well-formed and follows the IPv4 addressing rules. It does not perform any additional checks to ensure that the IP address is reachable, allocated, or not in use.

Steps:

  1. Define a function validate_ip_address that takes an IP address as input.
    • Inside the function, use the inet_aton method of the socket module to attempt to convert the IP address to a 32-bit packed binary format.
    • If the conversion is successful, return True, indicating that the IP address is valid
    • If an error is raised (meaning that the IP address is not valid), catch the error and return False, indicating that the IP address is not valid.
  2. Use the function to validate an IP address, and print a message indicating whether it is valid or not.

Python3




# Python program for the above approach
 
import socket
 
# Function to validate the IP Address
# using the socket module function
def validate_ip_address(ip_address):
    try:
        socket.inet_aton(ip_address)
        return True
    except socket.error:
        return False
 
# Driver Code
ip_address = "192.168.0.1"
if validate_ip_address(ip_address):
    print(f"{ip_address} is a valid IP address.")
else:
    print(f"{ip_address} is not a valid IP address.")
     
ip_address = "110.234.52.124"
if validate_ip_address(ip_address):
    print(f"{ip_address} is a valid IP address.")
else:
    print(f"{ip_address} is not a valid IP address.")
     
ip_address = "666.1.2.2"
if validate_ip_address(ip_address):
    print(f"{ip_address} is a valid IP address.")
else:
    print(f"{ip_address} is not a valid IP address.")
     
ip_address = "25.99.208.255 "
if validate_ip_address(ip_address):
    print(f"{ip_address} is a valid IP address.")
else:
    print(f"{ip_address} is not a valid IP address.")


Output

192.168.0.1 is a valid IP address.
110.234.52.124 is a valid IP address.
666.1.2.2 is not a valid IP address.
25.99.208.255  is a valid IP address.

Time Complexity: O(1) because the inet_aton method has a constant time complexity regardless of the length of the input IP address.

Space Complexity: O(1) because the amount of memory used by the function does not depend on the length of the input IP address.



Last Updated : 22 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads