Cómo validar la dirección MAC usando la expresión regular

Dada la string str , la tarea es verificar si la string dada es una dirección MAC válida o no mediante el uso de expresiones regulares .

Una dirección MAC válida debe cumplir las siguientes condiciones: 

  1. Debe contener 12 dígitos hexadecimales.
  2. Una forma de representarlos es formar seis pares de caracteres separados por un guión (-) o dos puntos (:). Por ejemplo, 01-23-45-67-89-AB es una dirección MAC válida.
  3. Otra forma de representarlos es formar tres grupos de cuatro dígitos hexadecimales separados por puntos (.). Por ejemplo, 0123.4567.89AB es una dirección MAC válida.

Ejemplos: 

Entrada: str = «01-23-45-67-89-AB»; 
Salida: verdadero 
Explicación: 
La string dada satisface todas las condiciones mencionadas anteriormente. Por lo tanto, es una dirección MAC válida.

Entrada: str = «01-23-45-67-89-AH»; 
Salida: falso 
Explicación: 
la string dada contiene ‘H’, los dígitos hexadecimales válidos deben ir seguidos de una letra de af, AF y 0-9. Por lo tanto, no es una dirección MAC válida.

Entrada: str = “01-23-45-67-AH”; 
Salida: falso 
Explicación: 
La string dada tiene cinco grupos de dos dígitos hexadecimales. Por lo tanto, no es una dirección MAC válida. 
 

Enfoque: La idea es usar la expresión regular para resolver este problema. Se pueden seguir los siguientes pasos para calcular la respuesta. 

  • Consigue la cuerda.
  • Cree una expresión regular para verificar la dirección MAC válida como se menciona a continuación:

expresión regular = «^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})|([0-9a-fA-F] {4}\\.[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4})$”; 

  • Dónde: 
    • ^ representa el comienzo de la string.
    • ([0-9A-Fa-f]{2}[:-]){5} representa los cinco grupos de dos dígitos hexadecimales separados por guiones (-) o dos puntos (:)
    • ([0-9A-Fa-f]{2}) representa los grupos uno de dos dígitos hexadecimales.
    • | representa el o.
    • ( representa el inicio del grupo.
    • [0-9a-fA-F]{4}\\. representa la primera parte de cuatro dígitos hexadecimales separados por puntos (.).
    • [0-9a-fA-F]{4}\\. representa la segunda parte de cuatro dígitos hexadecimales separados por puntos (.).
    • [0-9a-fA-F]{4} representa la tercera parte de cuatro dígitos hexadecimales.
    • ) representa el final del grupo.
    • $ representa el final de la string.
  • Haga coincidir la string dada con la expresión regular. 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
// MAC address using
// regular expression
 
import java.util.regex.*;
class GFG {
 
    // Function to validate
    // MAC address
    // using regular expression
    public static boolean isValidMACAddress(String str)
    {
        // Regex to check valid
        // MAC address
        String regex = "^([0-9A-Fa-f]{2}[:-])"
                       + "{5}([0-9A-Fa-f]{2})|"
                       + "([0-9a-fA-F]{4}\\."
                       + "[0-9a-fA-F]{4}\\."
                       + "[0-9a-fA-F]{4})$";
 
        // Compile the ReGex
        Pattern p = Pattern.compile(regex);
 
        // If the string is empty
        // return false
        if (str == null)
        {
            return false;
        }
 
        // Find match between given string
        // and regular expression
        // uSing Pattern.matcher()
 
        Matcher m = p.matcher(str);
 
        // Return if the string
        // matched the ReGex
        return m.matches();
    }
 
    // Driver code
    public static void main(String args[])
    {
 
        // Test Case 1:
        String str1 = "01-23-45-67-89-AB";
        System.out.println(isValidMACAddress(str1));
 
        // Test Case 2:
        String str2 = "01:23:45:67:89:AB";
        System.out.println(isValidMACAddress(str2));
 
        // Test Case 3:
        String str3 = "0123.4567.89AB";
        System.out.println(isValidMACAddress(str3));
 
        // Test Case 4:
        String str4 = "01-23-45-67-89-AH";
        System.out.println(isValidMACAddress(str4));
 
        // Test Case 5:
        String str5 = "01-23-45-67-AH";
        System.out.println(isValidMACAddress(str5));
    }
}

Python3

# Python3 program to validate
# MAC address using
# using regular expression
import re
 
# Function to validate MAC address.
 
 
def isValidMACAddress(str):
 
    # Regex to check valid
    # MAC address
    regex = ("^([0-9A-Fa-f]{2}[:-])" +
             "{5}([0-9A-Fa-f]{2})|" +
             "([0-9a-fA-F]{4}\\." +
             "[0-9a-fA-F]{4}\\." +
             "[0-9a-fA-F]{4})$")
 
    # Compile the ReGex
    p = re.compile(regex)
 
    # If the string is empty
    # return false
    if (str == None):
        return False
 
    # Return if the string
    # matched the ReGex
    if(re.search(p, str)):
        return True
    else:
        return False
 
# Driver code
 
 
# Test Case 1:
str1 = "01-23-45-67-89-AB"
print(isValidMACAddress(str1))
 
# Test Case 2:
str2 = "01:23:45:67:89:AB"
print(isValidMACAddress(str2))
 
# Test Case 3:
str3 = "0123.4567.89AB"
print(isValidMACAddress(str3))
 
# Test Case 4:
str4 = "01-23-45-67-89-AH"
print(isValidMACAddress(str4))
 
# Test Case 5:
str5 = "01-23-45-67-AH"
print(isValidMACAddress(str5))
 
# This code is contributed by avanitrachhadiya2155

C++

// C++ program to validate the
// MAC address
// using Regular Expression
#include <iostream>
#include <regex>
using namespace std;
 
// Function to validate the MAC address
bool isValidMACAddress(string str)
{
 
    // Regex to check valid MAC address
    const regex pattern(
    "^([0-9A-Fa-f]{2}[:-]){5}"
      "([0-9A-Fa-f]{2})|([0-9a-"
    "fA-F]{4}\\.[0-9a-fA-F]"
      "{4}\\.[0-9a-fA-F]{4})$");
 
    // If the MAC address
    // is empty return false
    if (str.empty())
    {
        return false;
    }
 
    // Return true if the MAC address
    // matched the ReGex
    if (regex_match(str, pattern))
    {
        return true;
    }
    else
    {
        return false;
    }
}
 
// Driver Code
int main()
{
    // Test Case 1:
    string str1 = "01-23-45-67-89-AB";
    cout << isValidMACAddress(str1) << endl;
 
    // Test Case 2:
    string str2 = "01:23:45:67:89:AB";
    cout << isValidMACAddress(str2) << endl;
 
    // Test Case 3:
    string str3 = "0123.4567.89AB";
    cout << isValidMACAddress(str3) << endl;
 
    // Test Case 4:
    string str4 = "01-23-45-67-89-AH";
    cout << isValidMACAddress(str4) << endl;
 
    // Test Case 5:
    string str5 = "01-23-45-67-AH";
    cout << isValidMACAddress(str5) << endl;
 
    return 0;
}
 
// This code is contributed by yuvraj_chandra
Producción

true
true
true
false
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 *