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:
- Consigue la cuerda.
- 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;
- 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.
- Haga coincidir la string con Regex. En Java, esto se puede hacer usando Pattern.matcher() .
- 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