Cómo validar una dirección IP usando ReGex

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álido

Entrada: str = «000.12.234.23.23» 
Salida: IP no válida

Entrada: str = “2F33:12a0:3Ea0:0302” 
Salida: IP no válida

Entrada: 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
Producción

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

Deja una respuesta

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