Validate IP Address using RegEx in Python

Validate IP Address using RegEx in Python

Problem Statement: Write a Python program to validate if the given string is a valid IP address or not.

This is one of the questions asked in the Juniper coding interview.

In Computer Network, the IP address uniquely defines each host or node in the network. You can read mode about IP address in Computer Networking.

Basically, this is a pattern matching problem where we can use a regular expression (RegEx).

IP Address Validation using Python RegEx

Here we are using the search method from the re module. You can find more detail in the Python RegEx tutorial.

Method 1: Using RegEx

Code

import re 
  
regexIP = '''^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.( 
    25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.( 
    25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.( 
    25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)'''
  
def validateIP(strIP): 
  
    if(re.search(regexIP, strIP)):
        print(f"{strIP} is a valid IP address.") 
      
    else: 
        print(f"{strIP} is an invalid IP address.") 
  
  
if __name__ == '__main__' : 
      
    strIP = "122.134.3.123"
    validateIP(strIP) 
  
    strIP = "44.235.34.1"
    validateIP(strIP) 
  
    strIP = "277.13.23.17"
    validateIP(strIP) 

Output

122.134.3.123 is a valid IP address. 
44.235.34.1 is a valid IP address.
277.13.23.17 is an invalid IP address.

Note: When we say IP address, by default it’s IPv4 address which is different from IPv6 address.

Method 2: Without RegEx

Python Code:

(This solution is shared by Mallikarjuna.)

def validate_ip(ip):
    part = ip.split(".")
    if not (len(part) == 4):
        return False
    for i in part:
        if int(i) > 255:
            return False
        if not isinstance(int(i),int):
            return False
    return True
    
if __name__ == "__main__":
    ip = "10.10.10.40"
    out = validate_ip(ip)
    if out:
        print(f"{ip} is valid IP.")
    else:
        print(f"{ip} is invalid IP.")

This is a simple program to validate IP address using regex in Python. Do you have any other solutions? Let me know in the comment. Thanks!

9 Comments

  1. It says it’s valid – 122.134.3.0991 is a valid IP address.

    Can you test with this string – strIP = “122.134.3.0991”?

  2. out = "10.10.10.40"
    part = out.split(".")
    if len(part) > 4:
        print("invalid")
    for i in part:
        if int(i)  255:
            print("invalid")
        if not isinstance(int(i),int):
            print("invalid")
    print("valid")
    
      1. #ip = "122.134.3.0991"
        ip ="10.49.121.22"
        part = ip.split(".")
        if len(part) == 4:
            print('''It's a Valid IPv4 format''')
            c=0
            for i in part:
                if int(i) < 255:
                    c = c+1
            if c == 4:
               print("A valid IP Address")
            else:
               print("Invalid IP Address&quot")    
                
        else:
            print("""It's completely an Invalid IPv4 format""")
        
  3. import re
    c=0
    ipadd="10.049.204.1"
    ip=ipadd.split('.')
    exp ='(2[0-5][0-4]|[01](\d?){2}|(\d?){2})'
    for i in ip:
        print(i)
        if(re.fullmatch(exp,i)):
            c=c+1
    if c==4:
        print("It is a valid IP")
    else:
        print("An invalid IP")
    

Leave a Reply

Your email address will not be published. Required fields are marked *