Compruebe si la dirección de correo electrónico dada es válida o no en C++

Dada una string de correo electrónico que denota una dirección de correo electrónico , la tarea es verificar si una dirección de correo electrónico válida consta de un prefijo de correo electrónico y un dominio de correo electrónico, ambos en formatos aceptables:

    Ejemplos:

    Entrada: email = “contribute@geeksforgeeks.org” Salida: Válido Explicación: La string dada sigue todos los criterios para una string de correo electrónico válida. 

    Entrada: correo electrónico = «contribute@geeksforgeeks..org»
    Salida: no válido

    Enfoque basado en String Traversal : siga los pasos a continuación:

    1. Compruebe si el primer carácter de la string de identificación del correo electrónico es un alfabeto o no. Si no, entonces el correo electrónico no es válido .
    2. Ahora recorra la string de correo electrónico para encontrar la posición «@» y «.» Si “@” o “.” no está presente, entonces el correo electrónico no es válido .
    3. Si “.” no está presente después de «@» , entonces el correo electrónico no es válido .
    4. Si “.” es el último carácter de la string de correo electrónico , entonces la identificación del correo electrónico no es válida .
    5. De lo contrario, el correo electrónico es válido .

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

    C++

    // C++ program for the above approach
      
    #include <bits/stdc++.h>
    using namespace std;
      
    // Function to check the character
    // is an alphabet or not
    bool isChar(char c)
    {
        return ((c >= 'a' && c <= 'z')
                || (c >= 'A' && c <= 'Z'));
    }
      
    // Function to check the character
    // is an digit or not
    bool isDigit(const char c)
    {
        return (c >= '0' && c <= '9');
    }
      
    // Function to check email id is
    // valid or not
    bool is_valid(string email)
    {
        // Check the first character
        // is an alphabet or not
        if (!isChar(email[0])) {
      
            // If it's not an alphabet
            // email id is not valid
            return 0;
        }
        // Variable to store position
        // of At and Dot
        int At = -1, Dot = -1;
      
        // Traverse over the email id
        // string to find position of
        // Dot and At
        for (int i = 0;
             i < email.length(); i++) {
      
            // If the character is '@'
            if (email[i] == '@') {
      
                At = i;
            }
      
            // If character is '.'
            else if (email[i] == '.') {
      
                Dot = i;
            }
        }
      
        // If At or Dot is not present
        if (At == -1 || Dot == -1)
            return 0;
      
        // If Dot is present before At
        if (At > Dot)
            return 0;
      
        // If Dot is present at the end
        return !(Dot >= (email.length() - 1));
    }
      
    // Driver Code
    int main()
    {
        // Given string email
        string email = "contribute@geeksforgeeks.org";
      
        // Function Call
        bool ans = is_valid(email);
      
        // Print the result
        if (ans) {
            cout << email << " : "
                 << "valid" << endl;
        }
        else {
            cout << email << " : "
                 << "invalid" << endl;
        }
      
        return 0;
    }
    
    Producción:

    contribute@geeksforgeeks.org : valid
    

    Complejidad temporal: O(N)
    Espacio auxiliar: O(1)

    Enfoque basado en expresiones regulares : el problema dado también se puede resolver usando expresiones regulares. A continuación se muestran los pasos:

    • Obtenga la string de correo electrónico .
    • Cree una expresión regular para verificar el correo electrónico válido como se menciona a continuación:

    expresión regular = “ (\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+”

    • Haga coincidir la string de correo electrónico dada con la expresión regular. En C++ , esto se puede hacer usando regex_match() .
    • Imprima «Válido» si la string de correo electrónico dada coincide con la expresión regular dada; de lo contrario, devuelva «No válido» .

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

    C++

    // C++ program for the above approach
      
    #include <iostream>
    #include <regex>
    using namespace std;
      
    // Function to check the email id
    // is valid or not
    bool isValid(const string& email)
    {
      
        // Regular expression definition
        const regex pattern(
            "(\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+");
      
        // Match the string pattern
        // with regular expression
        return regex_match(email, pattern);
    }
      
    // Driver Code
    int main()
    {
        // Given string email
        string email
            = "contribute@geeksforgeeks.org";
      
        // Function Call
        bool ans = isValid(email);
      
        // Print the result
        if (ans) {
            cout << email << " : "
                 << "valid" << endl;
        }
        else {
            cout << email << " : "
                 << "invalid" << endl;
        }
    }
    
    Producción:

    contribute@geeksforgeeks.org : valid
    

    Complejidad temporal: O(N)
    Espacio auxiliar: O(1)

    Publicación traducida automáticamente

    Artículo escrito por _sharma_ 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 *