Qual é uma boa técnica para validar um endereço de e-mail (por exemplo, de um campo de entrada do usuário) no Android? org.apache.commons.validator.routines.EmailValidator não parece estar disponível. Existem outras bibliotecas que já estão incluídas no Android ou eu precisaria usar o RegExp?
320
Respostas:
Não use um reg-ex.
Aparentemente, o seguinte é um reg-ex que valida corretamente a maioria dos endereços de e-mail em conformidade com a RFC 2822 (e ainda falhará em coisas como "[email protected]", assim como org.apache.commons.validator. routines.EmailValidator)
Possivelmente, a maneira mais fácil de validar um e-mail, basta enviar um e-mail de confirmação para o endereço fornecido e ele salta e, em seguida, não é válido.
Se você deseja realizar algumas verificações básicas, basta verificar se está no formato
*@*
Se você tiver alguma validação específica da lógica de negócios, poderá executar isso usando uma regex, por exemplo, deve ser uma conta gmail.com ou algo assim.
fonte
[email protected]
e ainda mais arquivos como o .museum. Estou esquecendo de algo? Não quero bloquear nenhum dos meus usuários por não validar seu endereço de email válido, mas isso parece estar funcionando para tudo o que posso pensar.Outra opção é a criação de padrões, começando com o nível 8 da API:
Origem visível dos padrões
OU
Solução de uma linha de @AdamvandenHoven:
fonte
(target == null)
comTextUtils.isEmpty(target)
:) #[email protected]
como um email válidoO próximo padrão é usado no correio K-9:
Você pode usar a função
fonte
android.util.Patterns.EMAIL_ADDRESS
?[a-zA-Z0-9+._%-]
e os outros[a-zA-Z0-9-]
i
a partir de@gmail.com
ele retornará verdadeiro. O mesmo em `@yaho.com.Desde a API 8 (Android 2.2), existe um padrão: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
Então você pode usá-lo para validar sua E-mailString:
retorna true se o email é válido
UPD: Este código-fonte padrão é:
consulte: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
Assim, você pode criar você mesmo para compatibilidade com a API <8.
fonte
Agora temos um simples comparador de padrões de e-mail
fonte
Use o código de uma linha simples para validação de email
use como ...
fonte
Estas são as sugestões do Android Studio:
fonte
email == null
é redandunt conforme o TextUtils a verifica por dentroVocê pode usar expressão regular para fazer isso. Algo como o seguinte.
Nota: Verifique a expressão regular dada acima, não a use como ela é.
fonte
"Example Guy" <[email protected]>
. Embora você possa validar tecnicamente o email com uma regex , é um pouco absurdo fazê-lo.use android: inputType = "textEmailAddress" como abaixo:
e:
fonte
Você pode escrever uma extensão Kotlin assim:
E então chame assim:
fonte
Há uma
Patterns
classe no pacoteandroid.util
que é benéfica aqui. Abaixo está o método que eu sempre uso para validar e-mails e muitos outros itensfonte
Ligue para este método onde você deseja validar o ID do email.
fonte
Para uma validação Email android fornecer algum padrão embutido .Mas ele só apoiar nível API 8 e acima .
Aqui está o código para usar esse padrão para verificar a validação de email.
Certifique-se de que, após executar este método, verifique se, se esse método retornar true , você poderá salvar o email e se esse método retornará false , exibindo a mensagem de que o email é "Inválido".
Espero que você obtenha sua resposta, obrigado.
fonte
Posso enfaticamente recomendar que você não tente 'validar' os endereços de e-mail; você se envolverá em muito trabalho sem uma boa razão.
Apenas verifique se o que foi digitado não quebrará seu próprio código - por exemplo, não há espaços ou caracteres ilegais que possam causar uma exceção.
Qualquer outra coisa apenas causará muito trabalho para o retorno mínimo ...
fonte
Valide seu formato de endereço de email. [email protected]
fonte
fonte
Se você estiver usando a API 8 ou superior, poderá usar a
Patterns
classe prontamente disponível para validar o email. Código de amostra:Por acaso, se você estiver suportando um nível de API menor que 8, poderá simplesmente copiar o
Patterns.java
arquivo no seu projeto e referenciá-lo. Você pode obter o código fontePatterns.java
de este linkfonte
Aqui está
android.util.Patterns.EMAIL_ADDRESS
String
combinará seExemplo de algum email de correspondência especial
Você pode modificar esse padrão para o seu caso e validar
fonte
Experimente este método simples que não pode aceitar o endereço de e-mail começando com dígitos:
fonte
Experimente este código .. Realmente funciona ..
fonte
A seguir foi usado por mim. No entanto, ele contém caracteres extras que os e-mails normais, mas isso era um requisito para mim.
Resposta a esta pergunta: - Requisito para validar um endereço de e-mail com determinados pontos
Explicação-
fonte
A chave aqui é que você deseja validar completamente o endereço de email. Você não deseja apenas verificar a exatidão sintática, mas também se o endereço de email é real.
Duas razões óbvias: usuários reais geralmente digitam incorretamente seus endereços de e-mail e alguns usuários podem inserir endereços de email falsos. Portanto, você deseja fazer uma verificação sintática e uma verificação de existência.
A melhor maneira de fazer isso que encontrei no Android é usar a API de validação Cloudmersive gratuita para isso.
O código fica assim:
Estou usando isso em todos os meus aplicativos e é ótimo porque posso validar os endereços de email no UX no ponto de entrada.
fonte
Solução Kotlin mais simples usando funções de extensão:
e então você pode validar assim:
fonte
Observe que a maioria das expressões regulares não é válida para nomes de domínio internacionais (IDN) e novos domínios de nível superior, como .mobi ou .info (se você procurar códigos de países ou .org, .com, .gov e assim por diante).
Uma verificação válida deve separar a parte local (antes da arroba) e a parte do domínio. Você também deve considerar o comprimento máximo da parte e do domínio local (na soma 255 caracteres, incluindo o sinal de arroba).
A melhor abordagem é transformar o endereço em um formato compatível com IDN (se necessário), validar a parte local (RFC), verificar o tamanho do endereço e verificar a disponibilidade do domínio (pesquisa DNS MX) ou simplesmente enviar um email .
fonte
A classe Linkify possui alguns métodos auxiliares bastante úteis que podem ser relevantes, incluindo expressões regulares projetadas para captar números de telefone e endereços de email e assim:
http://developer.android.com/reference/android/text/util/Linkify.html
fonte
Eu usei o código follwing. Isso funciona grate.I espero que isso irá ajudá-lo.
e use o método follwing. Isso retornará true se o email for válido.
fonte
email é o seu email-is.
fonte
Para os amantes de regex, o melhor padrão de email (por exemplo, consistente com o RFC 822) que eu já encontrei desde agora é o seguinte (antes dos filtros fornecidos pelo PHP). Eu acho que é fácil traduzir isso para Java - para quem joga com a API <8:
fonte
Você pode fazer qualquer tipo de validação no Android com muita facilidade pelo arquivo oval.jar. OVal é uma estrutura de validação de uso geral pragmática e extensível para qualquer tipo de objeto Java.
Siga este link: http://oval.sourceforge.net/userguide.html
Você pode fazer o downlaod aqui: http://oval.sourceforge.net/userguide.html#download
Você pode usar a validação definindo tags nas variáveis
fonte
Você também pode usar
Se o email não for válido, ele lançará uma AddressException .
Infelizmente, o Android não suporta jndi-dns , mas apenas para lhe dar uma idéia de uma validação de email mais poderosa, você pode usá-lo para validar o domínio do email. Talvez um guru do Android possa ajudar e mostrar se existem alternativas semelhantes ... Um exemplo de implementação com java "regular" está disponível aqui .
EDITAR
Acabei de perceber que o javax.mail também não é suportado ... Mas este post mostra uma solução alternativa .
fonte