Fluid Attacks logo
Login
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Contact logo Contact Us
GET A DEMO

Validar Correo Electrónico

Necesidad

Validar correo electrónico en Java.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en Java.

  2. Se requiere evitar el subdireccionamiento usando el carácter \+

  3. Se conoce como utilizar expresiones regulares en Java [1].

Solución

Al crear un formulario en HTML, hay que ser consciente de un detalle ineludible: los usuarios se equivocan al rellenar un formulario. Ya sea que dicha equivocación se de por ambigüedad del formulario, o tal vez algún error del creador del mismo, o incluso, que el usuario se equivoque deliberadamente. El caso es que hay que estar preparado y por consiguiente anticiparse a dichos errores, para intentar que los datos lleguen correctamente a su destino y evitar cualquier tipo de moderación, revisión posterior o, peor aun, algún ataque que ponga en peligro la confidencialidad e integridad de la información.

Para evitar estos casos, se suele recurrir a un tipo de proceso automático llamado validación. En este, se establecen algunas pautas para que, si el usuario introduce alguna información incorrecta o invalida, deba modificarla o, en caso contrario, no podrá continuar ni enviar el formulario correctamente.

Por lo general, muchos de los formularios HTML usan los correos electrónicos con el fin de permitir a los usuarios registrarse en las aplicaciones web y, adicionalmente, tener la posibilidad de mantener contacto directo con el usuario. No obstante, la especificación de correos electrónicos, tal como lo define el estándar internacional de direcciones en Internet RFC 5322 y predecesores [2], es demasiado permisiva.

La presente solución provee una validación bastante más restrictiva en cuanto al uso de correos electrónicos en formularios web.

  1. Para verificar la estructura de un correo, sólo con caracteres válidos, excluyendo el signo +, se empieza por importar las clases de Java habituales para manejo de expresiones regulares.

    Main.java
    1
    2
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
  2. Posteriormente, se define el patrón que especifica una dirección de email válida.

    1
    2
    3
    4
    public class Main {
      public static void main(String[] args) {
        String emailPattern = "^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@" +
          "[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$";
    
  3. La explicación de la expresión regular utilizada es:

    • ^ especifica el inicio de la entrada.

    • ([_a-z0-9-]) primer grupo. Se refiere a la aparición de uno o más caracteres compuestos por guión bajo, letras, números y guiones.

    • (\\.[_a-z0-9-]) segundo grupo. Puede ser opcional y repetible, se refiere a la aparición de un punto seguido de uno o más caracteres compuestos por guión bajo, letras, números y guiones.

    • *@ carácter arroba.

    • ([a-z0-9-]) tercer grupo. Especifica la aparición de uno o más caracteres compuestos por letras, números y guiones.

    • (\\.[a-z0-9-]) cuarto grupo. Especifica un punto seguido de uno o más caracteres compuestos por letras, números y guiones.

    • (\\.[a-z]{2,4}) quinto grupo. Especifica un punto seguido de entre 2 y 4 letras, con el fin de considerar dominios terminados, por ejemplo, en .co y .info.

    • $ especifica el fin de la entrada.

  4. Compilamos la expresión regular y asignamos a la variable email el argumento con el que se haya llamado a la aplicación.

    1
    2
    Pattern pattern = Pattern.compile(emailPattern);
    String email = args[0];
    
  5. En caso de que el email no sea nulo, se le aplica el patrón y se comprueba si cumple con este o no para mostrar por la salida estándar el mensaje Valido.

    1
    2
    3
    4
    if (email != null) {
       Matcher matcher = pattern.matcher(email);
       if (matcher.matches()) {
         System.out.println("Válido");
    
  6. De no haber sido válido el email, simplemente se muestra el mensaje NO Válido.

    1
    2
    3
    4
    5
    6
    7
       }
       else {
         System.out.println("NO Válido");
       }
      }
     }
    }
    
  7. Se compila y ejecuta la aplicación con algunos casos de prueba.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    % javac Main.java
    % java Main fluidattacks@gmail.com.co
    Válido
    
    % java Main fluidattacks+prueba@gmail.com.co
    NO Válido
    
    % java Main fluidattacks+prueba@gmail.com.co
    NO Válido
    
    % java Main fluidattacks@gmail.com.co
    Válido
    
    % java Main fluidattacks@gmail.com
    Válido
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

Main.java Clase Main muestra la validación de email usando expresiones regulares.


Service status - Terms of Use