Given an IP address, the task is to validate this IP address with the help of Regular Expressions.
The IP address is a string in the form “A.B.C.D”, where the value of A, B, C, and D may range from 0 to 255. Leading zeros are allowed. The length of A, B, C, or D can’t be greater than 3.
Examples:
Input: str = "000.12.12.034" Output: True Input: str = "000.12.234.23.23" Output: False Input: str = "121.234.12.12" Output: True Input: str = "I.Am.not.an.ip" Output: False
Approach:
In this article, the IP address is validated with the help of Regular Expressions or Regex. Below are the steps to solve this problem using ReGex:
- Get the string.
- Regular expression to validate an IP address:
// ReGex to numbers from 0 to 255 zeroTo255 -> (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5]) // ReGex to validate complete IP address IPAddress -> zeroTo255 + "\\." + zeroTo255 + "\\." + zeroTo255 + "\\." + zeroTo255;
- where:
- \d represents digits in regular expressions, same as [0-9]
- \\d{1, 2} catches any one or two-digit number
- (0|1)\\d{2} catches any three-digit number starting with 0 or 1.
- 2[0-4]\\d catches numbers between 200 and 249.
- 25[0-5] catches numbers between 250 and 255.
- Match the string with the Regex. In Java, this can be done using Pattern.matcher().
- Return true if the string matches with the given regex, else return false.
Below is the implementation of the above approach:
Java
// Java program to validate an IP address // using Regular Expression or ReGex import java.util.regex.*;
class IPAddressValidation {
// Function to validate the IPs address.
public static boolean isValidIPAddress(String ip)
{
// Regex for digit from 0 to 255.
String zeroTo255
= "(\\d{1,2}|(0|1)\\"
+ "d{2}|2[0-4]\\d|25[0-5])" ;
// Regex for a digit from 0 to 255 and
// followed by a dot, repeat 4 times.
// this is the regex to validate an IP address.
String regex
= zeroTo255 + "\\."
+ zeroTo255 + "\\."
+ zeroTo255 + "\\."
+ zeroTo255;
// Compile the ReGex
Pattern p = Pattern.compile(regex);
// If the IP address is empty
// return false
if (ip == null ) {
return false ;
}
// Pattern class contains matcher() method
// to find matching between given IP address
// and regular expression.
Matcher m = p.matcher(ip);
// Return if the IP address
// matched the ReGex
return m.matches();
}
// Driver code
public static void main(String args[])
{
// Checking for True case.
// Test Case: 1
System.out.println( "Test Case 1:" );
String str1 = "000.12.12.034" ;
System.out.println( "Input: " + str1);
System.out.println(
"Output: "
+ isValidIPAddress(str1));
// Test Case: 2
System.out.println( "\nTest Case 2:" );
String str2 = "121.234.12.12" ;
System.out.println( "Input: " + str2);
System.out.println(
"Output: "
+ isValidIPAddress(str2));
// Checking for False case.
// Test Case: 3
System.out.println( "\nTest Case 3:" );
String str3 = "000.12.234.23.23" ;
System.out.println( "Input: " + str3);
System.out.println(
"Output: "
+ isValidIPAddress(str3));
// Test Case: 4
System.out.println( "\nTest Case 4:" );
String str4 = "I.Am.not.an.ip" ;
System.out.println( "Input: " + str4);
System.out.println(
"Output: "
+ isValidIPAddress(str4));
}
} |
Output:
Test Case 1: Input: 000.12.12.034 Output: true Test Case 2: Input: 121.234.12.12 Output: true Test Case 3: Input: 000.12.234.23.23 Output: false Test Case 4: Input: I.Am.not.an.ip Output: false