145 votes

Comment vérifier si l'entrée est une adresse e-mail dans Flutter ?

Selon RegExp nous devons utiliser JavaScript ( Perl 5 ) expressions régulières : Spécification de l'ECMA . Quelle méthode dois-je utiliser dans Dart pour vérifier si l'entrée est un email ?

5 votes

À partir de 2019 : pour prendre correctement en charge la validation des e-mails dans Dart/Flutter, veuillez consulter le paquet pub.dev email_validator.

14voto

Priyansh Brannen Points 131

J'ai utilisé un validateur simple et pas très rigoureux qui permet aussi anything@string.com y anything@string.co.in domaines :

var email = "tony123_90874.coder@yahoo.co.in";
  bool emailValid = RegExp(r'^.+@[a-zA-Z]+\.{1}[a-zA-Z]+(\.{0,1}[a-zA-Z]+)$').hasMatch(email);
  print (emailValid);

1 votes

En fait, il vous manque - char pour le nom de domaine :) ^.+@[a-zA-Z-]+ \. {1}[a-zA-Z]+( \. {0,1}[a-zA-Z]+)$.

10voto

Lance Points 309

2019 Réponse correcte

Pour prendre en charge correctement la validation des emails dans Dart/Flutter, veuillez consulter le paquet pub.dev email_validator .

Source : https://github.com/fredeil/email-validator.dart

_

Ceci supporte correctement :

  • TLDs [facultatif]
  • Domaines internationaux [facultatif]
  • Domaines filtrés (par exemple, utilisateur+filter@domain.name)
  • Adresses sans domaine (par exemple, user@localhost)

9voto

Googlian Points 503

Validation des e-mails en 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("aslam@gmail.com"));
}

Déclenchez la 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/3a3389b8ef88831128f0fa21393d70f0

1voto

Majid Points 1516

J'ai vu cette page plusieurs fois lors de mes recherches, et j'ai trouvé une Regex plus simple pour dart qui pourrait aider ceux qui viendront sur cette page plus tard.

voici la regex :

^[^@]+@[^@]+\.[^@]+

donc en dart vous pouvez l'utiliser comme

RegExp(r'^[^@]+@[^@]+\.[^@]+')

Il ne prend en charge que les courriels normaux et non ceux sans TLD. Par exemple, me@email.com mais pas me@localhost. J'espère que cela vous aidera.

0 votes

Cela ne correspond pas me@localhost

0 votes

Non, il ne s'agit que d'emails normaux (à utiliser pour la production par exemple).

0voto

bitfreeze Points 58

Je suis arrivé sur cette page à la recherche d'une validation d'e-mail, mais aucun des exemples trouvés ici n'a passé tous mes tests.

J'ai donc décidé d'écrire mon propre regEx, en adaptant certains concepts d'autres réponses (en s'appuyant sur les épaules des géants), et il fonctionne très 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 trouvez des problèmes avec ce modèle, faites-le moi savoir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X