Quelle est une bonne technique pour valider une adresse e-mail (par exemple à partir d'un champ de saisie utilisateur) dans Android? org.apache.commons.validator.routines.EmailValidator ne semble pas être disponible. Existe-t-il déjà d'autres bibliothèques qui sont incluses dans Android ou devrais-je utiliser RegExp?
320
Réponses:
N'utilisez pas de reg-ex.
Apparemment, ce qui suit est un reg-ex qui valide correctement la plupart des adresses électroniques conformes à la RFC 2822 (et échouera toujours sur des choses comme "[email protected]", tout comme org.apache.commons.validator). routines.EmailValidator)
Peut-être le moyen le plus simple de valider un e-mail pour simplement envoyer un e-mail de confirmation à l'adresse fournie et il rebondit alors il n'est pas valide.
Si vous souhaitez effectuer des vérifications de base, vous pouvez simplement vérifier que c'est dans le formulaire
*@*
Si vous avez une validation spécifique à la logique métier, vous pouvez effectuer cela en utilisant une expression régulière, par exemple doit être un compte gmail.com ou quelque chose.
la source
[email protected]
et même des tld plus longs comme .museum. Suis-je en train de manquer quelque chose? Je ne veux bloquer aucun de mes utilisateurs en échouant à valider leur adresse e-mail valide, mais cela semble fonctionner pour tout ce à quoi je peux penser.Une autre option est les modèles intégrés commençant par l'API niveau 8:
Source visible des motifs
OU
Solution en ligne de @AdamvandenHoven:
la source
(target == null)
parTextUtils.isEmpty(target)
:)[email protected]
comme un email valideLe modèle suivant est utilisé dans le courrier K-9:
Vous pouvez utiliser la fonction
la source
android.util.Patterns.EMAIL_ADDRESS
?[a-zA-Z0-9+._%-]
et les autres[a-zA-Z0-9-]
i
de@gmail.com
ce retourne vrai. Idem dans `@yaho.com.Depuis l'API 8 (Android 2.2), il existe un modèle: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
Vous pouvez donc l'utiliser pour valider votreEmailString:
renvoie vrai si l'e-mail est valide
UPD: Ce code source de modèle est:
voir: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
Vous pouvez donc le créer vous-même pour assurer la compatibilité avec l'API <8.
la source
Nous avons maintenant un simple modèle de correspondance des modèles d'e-mail
la source
Utilisez un code d'une seule ligne pour la validation des e-mails
utiliser comme ...
la source
Voici les suggestions d'Android Studio:
la source
email == null
est redandunt comme TextUtils le vérifie à l'intérieurVous pouvez utiliser une expression régulière pour ce faire. Quelque chose comme ce qui suit.
Remarque: Vérifiez l'expression régulière donnée ci-dessus, ne l'utilisez pas telle quelle.
la source
"Example Guy" <[email protected]>
. Bien que vous puissiez techniquement valider un e-mail avec une expression régulière , il est un peu absurde de le faire.utilisez android: inputType = "textEmailAddress" comme ci-dessous:
et:
la source
Vous pouvez écrire une extension Kotlin comme ceci:
Et puis appelez-le comme ceci:
la source
Il y a une
Patterns
classe dans le packageandroid.util
qui est bénéfique ici. Voici la méthode que j'utilise toujours pour valider les e-mails et bien d'autres chosesla source
Appelez cette méthode où vous souhaitez valider l'ID de l'e-mail.
la source
Pour une validation Email android fournir un modèle de INBUILT .Mais il ne supporte que le niveau de l' API 8 et au- dessus .
Voici le code pour utiliser ce modèle pour vérifier la validation des e-mails.
Assurez-vous qu'après avoir exécuté cette méthode, vous devez vérifier que si cette méthode renvoie true, vous autorisez à enregistrer le courrier électronique et si cette méthode retourne false, affichez le message que le courrier électronique est "invalide".
J'espère que vous aurez votre réponse, merci.
la source
Puis-je FORTEMENT vous recommander de ne pas essayer de «valider» les adresses e-mail, vous allez simplement vous lancer dans beaucoup de travail sans raison valable.
Assurez-vous simplement que ce qui est entré ne cassera pas votre propre code - par exemple, aucun espace ou caractère illégal qui pourrait provoquer une exception.
Tout le reste vous causera beaucoup de travail pour un rendement minimal ...
la source
Validez le format de votre adresse e-mail. [email protected]
la source
la source
Si vous utilisez l'API 8 ou supérieure, vous pouvez utiliser la
Patterns
classe facilement disponible pour valider les e-mails. Exemple de code:Par chance, si vous prenez même en charge un niveau d'API inférieur à 8, vous pouvez simplement copier le
Patterns.java
fichier dans votre projet et le référencer. Vous pouvez obtenir le code sourcePatterns.java
de ce lienla source
Voici
android.util.Patterns.EMAIL_ADDRESS
String
correspondra siExemple d'e-mail de match spécial
Vous pouvez modifier ce modèle pour votre cas, puis valider en
la source
Essayez cette méthode simple qui ne peut pas accepter l'adresse e-mail commençant par des chiffres:
la source
Essayez ce code .. Il fonctionne vraiment ..
la source
Ce qui suit a été utilisé par moi. Cependant, il contient des caractères supplémentaires par rapport aux e-mails normaux, mais c'était une exigence pour moi.
Réponse à cette question: - Obligation de valider une adresse e-mail avec des points donnés
Explication-
la source
La clé ici est que vous souhaitez valider entièrement l'adresse e-mail. Vous ne voulez pas seulement vérifier l'exactitude syntaxique, vous voulez vérifier si l'adresse e-mail est réelle.
Deux raisons évidentes: les vrais utilisateurs tapent souvent mal leurs adresses e-mail et certains utilisateurs peuvent saisir de fausses adresses e-mail. Par conséquent, vous souhaitez effectuer une vérification syntaxique et une vérification d'existence.
La meilleure façon de le faire que j'ai trouvée sur Android est d'utiliser l' API Cloudmersive Validation gratuite pour cela.
Le code ressemble à ceci:
J'utilise cela dans toutes mes applications et c'est génial car je peux valider les adresses e-mail dans l' UX au point d'entrée.
la source
Solution Kotlin la plus simple utilisant des fonctions d'extension:
et ensuite vous pouvez valider comme ceci:
la source
Notez que la plupart des expressions régulières ne sont pas valides pour les noms de domaine internationaux (IDN) et les nouveaux domaines de premier niveau comme .mobi ou .info (si vous vérifiez les codes de pays ou .org, .com, .gov, etc.).
Une vérification valide doit séparer la partie locale (avant le signe at) et la partie domaine. Vous devez également tenir compte de la longueur maximale de la partie locale et du domaine (en somme 255 caractères, y compris le signe at).
La meilleure approche consiste à transformer l'adresse dans un format compatible IDN (si nécessaire), à valider la partie locale (RFC), à vérifier la longueur de l'adresse et à vérifier la disponibilité du domaine (recherche DNS MX) ou simplement envoyer un e-mail .
la source
La classe Linkify a quelques méthodes d'assistance très utiles qui pourraient être pertinentes, y compris des expressions régulières conçues pour récupérer des numéros de téléphone et des adresses e-mail et autres:
http://developer.android.com/reference/android/text/util/Linkify.html
la source
J'ai utilisé le code follwing.Cela fonctionne, j'espère que cela vous aidera.
et utilisez la méthode follwing. Cela renvoie vrai si l'e-mail est valide.
la source
l'e-mail est votre e-mail.
la source
Pour les amateurs de regex, le meilleur modèle de courrier électronique (conforme à la RFC 822) que j'ai jamais trouvé depuis est le suivant (avant les filtres fournis par PHP). Je suppose qu'il est facile de traduire cela en Java - pour ceux qui jouent avec l'API <8:
la source
Vous pouvez effectuer n'importe quel type de validation dans Android très facilement par le fichier oval.jar. OVal est un cadre de validation pragmatique et extensible à usage général pour tout type d'objets Java.
suivez ce lien: http://oval.sourceforge.net/userguide.html
Vous pouvez télécharger ceci à partir d'ici: http://oval.sourceforge.net/userguide.html#download
Vous pouvez utiliser la validation en définissant des balises dans les variables
la source
Vous pouvez également utiliser
Si l'e-mail n'est pas valide, il lèvera une exception AddressException .
Malheureusement, Android ne prend pas en charge jndi-dns , mais juste pour vous donner une idée d'une validation de messagerie plus puissante, vous pouvez l'utiliser pour valider le domaine de messagerie. Peut-être qu'un gourou Android pourrait vous aider et montrer s'il existe des alternatives similaires ... Un exemple d'implémentation avec Java "normal" est disponible ici .
ÉDITER
Je viens de réaliser que javax.mail n'est pas compatible non plus ... Mais ce post montre une solution de contournement .
la source