Dada una dirección IP , la tarea es validar esta dirección IP con la ayuda de Regex (Expresión regular) en C++ como una dirección IPv4 o IPv6 válida . Si la dirección IP no es válida, imprima una dirección IP no válida.
Ejemplos:
Entrada: str = “203.120.223.13”
Salida: IPv4 válidoEntrada: str = «000.12.234.23.23»
Salida: IP no válidaEntrada: str = “2F33:12a0:3Ea0:0302”
Salida: IP no válidaEntrada: str = «I.Am.not.an.ip»
Salida: IP no válida
Acercarse:
- Regex (expresión regular) en C++ se utilizará para comprobar la dirección IP.
- Especificaciones de rango
Especificar un rango de caracteres o literales es uno de los criterios más simples utilizados en una expresión regular.
i) [a-z] ii) [A-Za-z0-9]
- En la expresión anterior ([]) se utilizan corchetes para especificar el rango.
- La primera expresión coincidirá exactamente con un carácter en minúscula.
- La segunda expresión especifica el rango que contiene un solo carácter en mayúscula, un carácter en minúscula y un dígito del 0 al 9.
- Ahora para incluir un ‘.’ como parte de una expresión, necesitamos escapar ‘.’ y esto se puede hacer como:
[\\.0-9]
La expresión anterior indica un ‘.’ y un dígito en el rango de 0 a 9 como expresión regular.
- La función regex_match() se usa para hacer coincidir el patrón dado. Esta función devuelve verdadero si la expresión dada coincide con la string. De lo contrario, la función devuelve falso.
Aquí está la implementación del enfoque anterior.
C++
// C++ program to validate // IP address using Regex #include <bits/stdc++.h> using namespace std; // Function for Validating IP string Validate_It(string IP) { // Regex expression for validating IPv4 regex ipv4("(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"); // Regex expression for validating IPv6 regex ipv6("((([0-9a-fA-F]){1,4})\\:){7}([0-9a-fA-F]){1,4}"); // Checking if it is a valid IPv4 addresses if (regex_match(IP, ipv4)) return "Valid IPv4"; // Checking if it is a valid IPv6 addresses else if (regex_match(IP, ipv6)) return "Valid IPv6"; // Return Invalid return "Invalid IP"; } // Driver Code int main() { // IP addresses to validate string IP = "257.120.223.13"; cout << Validate_It(IP) << endl; IP = "fffe:3465:efab:23fe:2235:6565:aaab:0001"; cout << Validate_It(IP) << endl; IP = "2F33:12a0:3Ea0:0302"; cout << Validate_It(IP) << endl; return 0; }
Python3
# Python3 program to validate # IP address using Regex import re # Function for Validating IP def Validate_It(IP): # Regex expression for validating IPv4 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])$" # Regex expression for validating IPv6 regex1 = "((([0-9a-fA-F]){1,4})\\:){7}"\ "([0-9a-fA-F]){1,4}" p = re.compile(regex) p1 = re.compile(regex1) # Checking if it is a valid IPv4 addresses if (re.search(p, IP)): return "Valid IPv4" # Checking if it is a valid IPv6 addresses elif (re.search(p1, IP)): return "Valid IPv6" # Return Invalid return "Invalid IP" # Driver Code # IP addresses to validate IP = "257.120.223.13" print(Validate_It(IP)) IP = "fffe:3465:efab:23fe:2235:6565:aaab:0001" print(Validate_It(IP)) IP = "2F33:12a0:3Ea0:0302" print(Validate_It(IP)) # This code is contributed by avanitrachhadiya2155
Invalid IP Valid IPv6 Invalid IP
Complejidad Temporal: O (N)
Espacio Auxiliar: O (1)
Publicación traducida automáticamente
Artículo escrito por abhishek_padghan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA