200 votes

Vérifier qu’une adresse de courriel est valide sur iOS

<blockquote> <p><strong>Doublon possible :</strong><br> <a href="http://stackoverflow.com/questions/800123/best-practices-for-validating-email-address-in-objective-c-on-ios-2-0">Méthodes conseillées pour la validation d’adresse e-mail en Objective-C sur iOS 2.0 ?</a> </p> </blockquote> <p>Je développe une application iPhone où j’ai besoin de l’utilisateur de donner son adresse e-mail lors de la connexion.</p> <p>Quelle est la meilleure façon de vérifier si une adresse email est une adresse email valide ?</p>

551voto

BadPirate Points 11614

Bonne fonction de cacao :

Discussion sur Lax vs Strict - http://blog.logichigh.com/2010/09/02/validating-an-e-mail-address/

7voto

benzado Points 36367

Pour vérifier si une variable chaîne de caractères contient une adresse de courriel valide, le plus simple est de tester avec une expression régulière. Il y a une bonne discussion de divers regex et leurs compromis à regular-expressions.info.

Ici est relativement simple, qui se penche sur le côté de permettre à certaines adresses non valides par le biais de: ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$

Comment vous pouvez utiliser des expressions régulières dépend de la version d'iOS que vous utilisez.

iOS 4.x et versions Ultérieures

Vous pouvez utiliser NSRegularExpression, ce qui vous permet de compiler et de tester une expression régulière directement.

iOS 3.x

Ne comprend pas l' NSRegularExpression classe, mais ne comprennent NSPredicate, ce qui peut correspondre à l'encontre des expressions régulières.

NSString *emailRegex = ...;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
BOOL isValid = [emailTest evaluateWithObject:checkString];

Lire l'intégralité d'un article au sujet de cette approche à cocoawithlove.com.

iOS 2.x

Ne comprennent pas toute l'expression régulière correspondant dans le Cacao bibliothèques. Cependant, vous pouvez facilement inclure RegexKit Lite dans votre projet, qui vous donne accès au niveau C regex Api inclus sur iOS 2.0.

6voto

jasongregori Points 3026

Heres un bon avec NSRegularExpression qui fonctionne pour moi.

``

Vous pouvez insérer quelque regex vous voulez mais j’aime être en mesure de le faire en une seule ligne.

3voto

PurplePilot Points 4039

pour valider l'e-mail de chaîne, vous devez écrire une expression régulière pour vérifier qu'il est dans la forme correcte. il y en a beaucoup sur le web, mais être prudent que certains peuvent exclure ce que sont réellement les adresses juridiques.

essentiellement, il va ressembler à quelque chose comme ceci

^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$

En fait de vérifier si l'email existe et ne rebondit pas signifierait l'envoi d'un e-mail et de voir ce que le résultat a été. c'est à dire il a rebondi ou il n'a pas. Cependant, il peut ne pas rebondir pendant plusieurs heures ou pas du tout, et encore de ne pas être une "vraie" adresse e-mail. Il y a un certain nombre de services là-bas qui prétendent le faire pour vous et serait probablement payés par vous, et franchement, pourquoi s'embêter à voir si c'est réel?

Il est bon de vérifier que l'utilisateur n'a pas commis leur e-mail d'autre ils pourraient entrer de manière incorrecte, pas de la réaliser, puis piraté de avec vous de ne pas répondre. Cependant, si quelqu'un veut ajouter un clochard adresse email il n'y aurait rien pour les arrêter création sur hotmail ou yahoo (ou de nombreux autres endroits) pour obtenir la même fin.

Les expression régulière et valider la structure, mais oublier de valider à l'encontre d'un service.

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