Selon la documentation RegExp , nous devons utiliser JavaScript
(Perl 5
) expressions régulières: spécification ECMA . Quel modèle utilisez-vous pour la validation des e-mails?
Je recommanderais à tout le monde de standardiser la spécification de validation des e-mails HTML5, qui diffère de la RFC822 en interdisant plusieurs fonctionnalités des adresses e-mail très rarement utilisées (comme les commentaires!), Mais qui peuvent être reconnues par des expressions régulières.
Voici la section sur la validation des e-mails dans la spécification HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e -mail-state-% 28type = email% 29
Et voici l'expression régulière:
^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$
Pour cette regex simple fonctionne assez bien.
var email = "[email protected]"
bool emailValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(email);
J'utilise ce modèle: validate-email-address-in-javascript . (Supprimer la barre oblique /
délimiteurs et ajoutez les délimiteurs Dart: r'
'
).
bool isEmail(String em) {
String p = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
RegExp regExp = new RegExp(p);
return regExp.hasMatch(em);
}
ÉDITER :
Pour plus d'informations sur la validation des e-mails, consultez ces articles: dominicsayers.com et regular-expressions.info . Cet outil peut également être très utile: gskinner RegExr .
EDIT: Justin en a un meilleur. J'utilise le modèle qu'il a proposé.
Le meilleur modèle regEx que j'ai trouvé est la validation d'e-mail RFC2822:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Tiré de: regexr.com/2rhq7
Tous les autres regEx que j'ai testés, marquez la chaîne email@email
comme positif, ce qui est faux.
Validation des e-mails dans Dart, suivez le Regex:
bool validateEmail(String value) {
Pattern pattern =
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
RegExp regex = new RegExp(pattern);
return (!regex.hasMatch(value)) ? false : true;
}
void main() {
print(validateEmail("[email protected]"));
}
Faites couler le Regex ci-dessous:
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$'
Référence: https://Gist.github.com/aslamanver/3a3389b8ef88831128f0fa21393d70f
2019 Réponse correcte
Pour prendre correctement en charge la validation des e-mails dans Dart/Flutter, consultez le package pub.dev email_validator
.
Source: https://github.com/fredeil/email-validator.Dart
_
Cela prend correctement en charge:
J'ai utilisé un validateur simple et pas si rigoureux qui permet aussi [email protected]
et [email protected]
domaines:
var email = "[email protected]";
bool emailValid = RegExp(r'^.+@[a-zA-Z]+\.{1}[a-zA-Z]+(\.{0,1}[a-zA-Z]+)$').hasMatch(email);
print (emailValid);
Je suis arrivé sur cette page à la recherche d'une validation par e-mail, mais aucun des exemples trouvés ici n'a réussi tous mes tests.
J'ai donc décidé d'écrire mon propre regEx, en adaptant certains des concepts d'autres réponses (debout sur les épaules de géants), et il se porte bien jusqu'à présent:
^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9][a-zA-Z0-9-]{0,253}\.)*[a-zA-Z0-9][a-zA-Z0-9-]{0,253}\.[a-zA-Z0-9]{2,}$
Si vous rencontrez des problèmes avec ce modèle, veuillez me le faire savoir.
J'ai vu cette page à quelques reprises lors de ma recherche, et j'ai trouvé une Regex pour Dart plus simple qui pourrait aider ceux qui reviendront sur cette page plus tard.
voici le regex:
^[^@]+@[^@]+\.[^@]+
donc dans Dart
vous pouvez l'utiliser comme
RegExp(r'^[^@]+@[^@]+\.[^@]+')
Il ne prend en charge que les e-mails normaux et non sans TLD. par exemple, [email protected] mais pas moi @ localhost. J'espère que ça aide.
La meilleure expression régulière que j'ai rencontrée jusqu'à présent est la suivante:
r '([a-z0-9] [- a-z0-9 _ +.] [a-z0-9]) @ ([a-z0-9] [- a-z0-9.] [a-z0-9]. (com | net) | ([0-9] {1,3}. {3} [0-9] {1,3})) "
cette approche repose sur l'ajout de chaque nom de domaine avec lequel vous souhaitez que votre utilisateur puisse se connecter.
je viens d'ajouter com et net car ce sont les plus populaires mais vous pouvez simplement ajouter plus