Validação de Email em Java

Siddharth Swami 12 outubro 2023
Validação de Email em Java

Antes de usar qualquer e-mail, temos que validá-lo. Os e-mails desempenham um papel fundamental na criação de formulários. Usando a expressão regular em Java, podemos validar um e-mail. Importamos o pacote java.util.regex para trabalhar com expressões regulares em Java.

Java nos fornece algumas maneiras de usar uma expressão regular para validar e-mails. Vários padrões de expressão regular podem ajudar na validação de emails em Java.

A primeira maneira é usar o regex mais simples. O padrão ^(.+)@(.+)$ é a expressão mais simples que verifica o símbolo @ nos emails. Nesse método, ele não se importará com os caracteres antes e depois do símbolo. Ele simplesmente dará falso para esse e-mail.

O código a seguir demonstra o método acima.

import java.util.*;
import java.util.regex.*;
public class Email_Validation {
  public static void main(String args[]) {
    ArrayList<String> email = new ArrayList<String>();
    email.add("example@domain.com");
    // Adding an invalid emails in list
    email.add("@helloworld.com");
    // Regular Expression
    String regx = "^(.+)@(.+)$";
    // Compile regular expression to get the pattern
    Pattern pattern = Pattern.compile(regx);
    // Iterate emails array list
    for (String email1 : email) {
      // Create instance of matcher
      Matcher matcher = pattern.matcher(email1);
      System.out.println(email1 + " : " + matcher.matches() + "\n");
    }
  }
}

Produção:

example@domain.com : true

@helloworld.com : false

No exemplo acima, criamos uma lista de emails contendo emails válidos e inválidos. Usamos a classe matcher para criar um método que verifica se um determinado email corresponde ao padrão ou não.

O segundo padrão é usado para adicionar uma restrição ao método da parte do nome do usuário. Aqui, [A-Za-z0-9+_.-]+@(.+)$ É a expressão regular usada para validar o e-mail. Ele verifica a parte do nome de usuário do e-mail e, de acordo com ela, valida o e-mail. Existem algumas regras para este método. O nome de usuário pode ter caracteres A-Z, caracteres a-z, números 0-9, ponto (.), Sublinhado (_). Nome de usuário com caracteres diferentes dos mencionados acima, então não será validado.

Por exemplo,

import java.util.*;
import java.util.regex.*;
public class Email_Validation {
  public static void main(String args[]) {
    ArrayList<String> email = new ArrayList<String>();
    email.add("example@domain.com");
    email.add("example2@domain.com");
    // Adding an invalid emails in list
    email.add("@helloworld.com");
    email.add("12Bye#domain.com");
    // Regular Expression
    String regx = "^[A-Za-z0-9+_.-]+@(.+)$";
    // Compile regular expression to get the pattern
    Pattern pattern = Pattern.compile(regx);
    // Iterate emails array list
    for (String email1 : email) {
      // Create instance of matcher
      Matcher matcher = pattern.matcher(email1);
      System.out.println(email1 + " : " + matcher.matches() + "\n");
    }
  }
}

Produção:

example@domain.com : true

example2@domain.com : true

@helloworld.com : false

12Bye#domain.com : false

O terceiro padrão para validação de email é permitido pelo método RFC 5322. O ^[a-zA-Z0-9_!#$%&'\*+/=?{|}~^.-]+@[a-zA-Z0-9.-]+$ é o regular expressão a ser usada na validação dos emails. Todos os caracteres permitidos para o formato de e-mail pela RFC são usados.

Por exemplo,

import java.util.*;
import java.util.regex.*;
public class Email_Validation {
  public static void main(String args[]) {
    ArrayList<String> email = new ArrayList<String>();
    email.add("example@domain.com");
    email.add("exampletwo@domain.com");
    email.add("12@domain.com");
    // Adding an invalid emails in list
    email.add("@helloworld.com");
    // Regular Expression
    String regx = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$";
    // Compile regular expression to get the pattern
    Pattern pattern = Pattern.compile(regx);
    // Iterate emails array list
    for (String email1 : email) {
      // Create instance of matcher
      Matcher matcher = pattern.matcher(email1);
      System.out.println(email1 + " : " + matcher.matches() + "\n");
    }
  }
}

Produção:

example@domain.com : true

exampletwo@domain.com : true

12@domain.com : true

@helloworld.com : false