Vérification e-mail avec regexp
YameFAZE
Messages postés
201
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Dans ma page de login j'ai voulu créer un regexp un peu plus complet pour vérifier les adresses e-mail mais il semblerait qu'Android Studio n'aime pas beaucoup.
Le problème semble venir de ce contre slash
Dans ma page de login j'ai voulu créer un regexp un peu plus complet pour vérifier les adresses e-mail mais il semblerait qu'Android Studio n'aime pas beaucoup.
Pattern p = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$");
Le problème semble venir de ce contre slash
+\..
A voir également:
- Vérification e-mail avec regexp
- É majuscule - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Adresse e-mail oubliée ? - Guide
- Mail avast 499 euros ✓ - Forum Virus
4 réponses
Hello,
Quand on parle de RegEx, je pense toujours à ça:
https://www.commitstrip.com/fr/2014/02/24/coder-on-the-verge-of-extinction/
Dans ton cas, si tu n'es pas obligé d'utiliser les RegEx, pourquoi ne pas utiliser une lib qui te permet de valider ton formulaire?
J'utilise android-saripaar qui est plutôt pas mal et qui utilise des annotations
Quand on parle de RegEx, je pense toujours à ça:
https://www.commitstrip.com/fr/2014/02/24/coder-on-the-verge-of-extinction/
Dans ton cas, si tu n'es pas obligé d'utiliser les RegEx, pourquoi ne pas utiliser une lib qui te permet de valider ton formulaire?
J'utilise android-saripaar qui est plutôt pas mal et qui utilise des annotations
Merci pour ta réponse. Effectivement cela semble pas mal mais comme d'habitude, c'est en anglais, pour les instructions de programmation ça va mais dès qu'il s'agit de texte... aurais-tu la patiente de m'expliquer comment adapter cela à mon code stp ?
mais comme d'habitude, c'est en anglais,Dans le monde du développement logiciel, il faut s'habituer à l'anglais...
Les exemples de code sont pourtant clair je pense.
Etape 1: tu utilises les annotations que tu veux. Dans ton cas, le 1er exemple me parait bien
Etape 2: Tu instancies un Validator dans le onCreate() (attention à bien déclarer la variable en tant que membre dans l'Activity
Etape 3: ton Activity doit implémenter l'interface ValidationListener. N'oublies pas de surcharger les 2 méthodes indiquées
Etape 4: je pense que tu as compris quoi faire ;)
Et pour l'intégrer dans ton Gradle:
compile 'com.mobsandgeeks:android-saripaar:2.0.3'
Bonjour
Si en Android studio (Java je suppose) le \ est le caractère d'échappement dans les string, comme pour la regex, alors il faut l'échapper 2 fois, une fois pour la string et la seconde pour la regex.
En C# on peut s'affranchir de ce problème, en mettant un @ avant la string
Je ne sais pas si c'est pareil en java
Si en Android studio (Java je suppose) le \ est le caractère d'échappement dans les string, comme pour la regex, alors il faut l'échapper 2 fois, une fois pour la string et la seconde pour la regex.
"\\."va charger "\." dans la variable, alors que
"\."va essayer d'échapper le . pour la variable, avant même de la passer à la regex.
En C# on peut s'affranchir de ce problème, en mettant un @ avant la string
@"\." //est équivalent à "\\."
Je ne sais pas si c'est pareil en java
http://www.weitz.de/regex-coach/
pour la regexp, comme indiqué par Whismeril, Java nécessitera deux antislashs pour le point.
sinon, ta regexp ne matche pas en regexp compatible Perl, à moins de la rendre insensible à la casse, ou que tes adresses soient déjà toutes en majuscules par un traitement préalable.
En Java, cela doit donner (non testé) :
C'est une vérification simple, mais qui ne validera pas forcément tous les e-mails, ou domaines. Par exemple, les adresses en ne passeront pas ton filtre, car il impose des domaines de premier niveau entre 2 et 4 lettres. Pour permettre des domaines de deux lettres ou plus, cela serait :
Une regexp Perl conforme à la RFC 822 peut devenir plus complexe que cela (pour un exemple généré automatiquement, voir ce lien - sur la base du module Perl Mail::RFC822::Address).
Par exemple est une adresse valide selon la RFC, etc. et pour prendre en compte tous les cas, faire usage d'une bibliothèque (à condition qu'elle soit bien faite) a du sens.
Dal
j'utilise souvent ce site
http://regexstorm.net/
Dans la page référence il y a toutes (ou presque) les syntaxes possibles avec un exemple pour chacune.
Et il y a un testeur.
Il existe de nombreux autres sites.