Cómo validar una dirección IP usando expresiones regulares en Java

Dada una dirección IP , la tarea es validar esta dirección IP con la ayuda de expresiones regulares .
La dirección IP es una string con el formato «ABCD», donde el valor de A, B, C y D puede oscilar entre 0 y 255. Se permiten ceros a la izquierda. La longitud de A, B, C o D no puede ser mayor que 3.
Ejemplos: 
 

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

Enfoque: 
en este artículo, la dirección IP se valida con la ayuda de expresiones regulares o Regex . A continuación se muestran los pasos para resolver este problema utilizando ReGex:
 

  1. Consigue la cuerda.
  2. Expresión regular para validar una dirección IP: 
     
// 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;
  1. dónde: 
    • \d representa dígitos en expresiones regulares, igual que [0-9]
    • \\d{1, 2} captura cualquier número de uno o dos dígitos
    • (0|1)\\d{2} captura cualquier número de tres dígitos que comience con 0 o 1.
    • 2[0-4]\\d captura números entre 200 y 249.
    • 25[0-5] captura números entre 250 y 255.
  2. Haga coincidir la string con Regex. En Java, esto se puede hacer usando Pattern.matcher()
     
  3. Devuelve verdadero si la string coincide con la expresión regular dada; de lo contrario, devuelve falso.

A continuación se muestra la implementación del enfoque anterior:
 

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));
    }
}
Producción: 

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

 

Publicación traducida automáticamente

Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *