Quelles sont les meilleures pratiques pour la validation des adresses e-mail sur iOS 2.0
Quelle est la façon la plus propre de valider une adresse e-mail que l'utilisateur entre sur iOS 2.0?
NOTE: C'est une question historique qui est spécifique à iOS 2.0 et en raison de son âge et de combien d'autres questions sont liées à cela il ne peut pas être à la retraite et ne DOIT PAS être changé pour un "moderne" de la question.
- Je suis à la recherche d'un cacao de la solution. Je comprends la validité des e-mails et les règles relatives à la validation des e-mails. Toutefois, puisque la RegEx n'est pas facilement accessible sur Cocoa Touch, je suis à la recherche d'un Cocoa Touch solution à la validation. Pas une liste de règles autour de la validation.
- Jusqu'à présent, le code de la suggestion que j'ai trouvé est à l'aide de RegExKitLite et des expressions régulières. Heureusement, c'est moins douloureux que cela puisse paraître.
- Voir les commentaires ci-dessous sur l'utilisation de NSRegularExpression pour les applications ne supportant pas os < 4.0.
- Notez que cela a été demandé, en 2009, quand il n'y a pas de NSRegularExpression sur l'iPhone.
- Les personnes utilisant iOS 3.0 pouvez utiliser
NSPredicate
; les personnes à l'aide de l'iOS 4.0, vous pouvez utiliserNSRegularExpression
. - Depuis ce qui semble être la canonique question concernant l'adresse email de validation, il est logique de mise à jour avec l'amélioration des réponses que iOS arrive à échéance. Avec cela à l'esprit, j'ai ajouté une réponse qui utilise iOS
NSDataDetector
pour valider les adresses e-mail: stackoverflow.com/a/23547905/257550 - C'est l'canonique question pour iOS 2.
NSDataDetector
n'existe pas dans iOS 2. - Cette question semble être hors-sujet, car il est sur iOS 2.0 qui a été frappée il y a des années.
Vous devez vous connecter pour publier un commentaire.
La réponse à À l'aide d'une expression régulière pour valider une adresse e-mail explique en détail que la grammaire spécifié dans la RFC 5322 est trop compliqué pour des primitifs expressions régulières.
Je recommande un véritable analyseur approche comme MKEmailAddress.
Rapide des expressions régulières solution reportez-vous à cette modification de DHValidation:
@"[^@]+@[^.@]+(\\.[^.@]+)+"
Si vous avez besoin de vérifier une adresse e-mail envoyer un message à elle et voir si elle réussit. Vous n'aurez plus jamais le vérifier avec n'importe quel niveau de précision avec une regex, de sorte qu'il est préférable de ne pas la pisse d'utilisateurs et de perdre signe ups en raison d'une inutilement stricte regex..international
(13).[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]| \\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+
à la fin supposée permettre? Il est en alternance avec la dernière décimale du groupe de l'adresse IPv4, ce qui est plutôt étrange.(?i)
. Voir userguide.icu-project.org/strings/regexp de référenceLire les RFC. Presque tout le monde qui pense savoir comment analyser/propre/valider une adresse e-mail est incorrecte.
http://tools.ietf.org/html/rfc2822
La Section 3.4.1 est très utile. Avis
Oui, cela veut dire +, ', etc sont tous légitimes.
La meilleure solution que j'ai trouvé jusqu'à présent (et celui que j'ai fini par aller avec) est à ajouter RegexKitLite Pour le projet, qui donne accès à des expressions régulières via NSString Catégories.
Il est tout à fait indolore pour l'ajouter au projet et une fois en place, l'un de l'expression régulière e-mail de validation de la logique de travail.
Une bonne façon de commencer est de décider de ce que vous et ne voulez-vous pas accepter comme une adresse e-mail?
99% des adresses e-mail ressembler à ceci: [email protected] ou [email protected]
Cependant, techniquement, il est légal d'avoir une adresse e-mail comme ceci: f
!#$%&'*+-/=?^_
{|}~"ha!"@comIl y a probablement qu'une poignée d'e-mails valides dans le monde pour les domaines de premier niveau, et presque personne ne l'utilise la plupart de ces autres personnages (surtout des citations et des backticks), de sorte que vous pouvez supposer que ce sont tous valides choses à faire. Mais vous devez le faire comme une décision consciente.
Au-delà de ça, ce que Paul dit et essayer de faire correspondre l'entrée d'une expression régulière comme ceci: ^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$
Que l'on fera correspondre assez bien à tout le monde de l'adresse e-mail.
L'accent mis sur les expressions régulières est bon, mais ce n'est qu'une première étape nécessaire. Il y a d'autres mesures qui doivent également être pris en compte pour une bonne stratégie de validation.
Deux choses sur le dessus de ma tête sont :
DNS de validation pour que le domaine existe réellement.
Dns après validation, vous pouvez également choisir de faire un smtp de validation.
envoyer un appel vers le serveur smtp de
voir si l'utilisateur existe réellement.
De cette façon, vous pouvez prendre toutes sortes d'erreurs de l'utilisateur et assurez-vous qu'il est une adresse email valide.
Cette fonction est simple et pourtant vérifie l'adresse de courriel de manière plus approfondie. Par exemple, selon RFC2822 une adresse e-mail ne doit pas contenir deux périodes consécutives, tels que [email protected]
Il est également important d'utiliser des ancres dans les expressions régulières comme on le voit dans cette fonction. Sans ancrages à l'adresse email suivante est valide: premier;nom)[email protected](bla parce que le [email protected] section est valide, ignorant premier;nom) au début et à la (bla à la fin. Les ancres de forcer le moteur d'expressions régulières pour valider l'ensemble de l'e-mail.
Cette fonction utilise NSPredicate qui n'existe pas dans iOS 2. Malheureusement, il ne peut pas aider le demandeur, mais j'espère qu'il va aider les autres avec les nouvelles versions d'iOS. Les expressions régulières dans cette fonction peut cependant être appliquée à RegExKitLite dans iOS 2 si. Et pour ceux qui utilisent iOS 4 ou une version ultérieure, ces expressions régulières peuvent être mis en œuvre avec NSRegularExpression.
Voir valider l'adresse de courriel à l'aide de l'expression régulière en Objective-C.
J'ai trouvé que l'utilisation d'une expression régulière fonctionne très bien pour valider une adresse e-mail.
L'inconvénient majeur pour les expressions régulières, bien sûr, est la facilité de maintenance, afin de commenter comme vous ne l'avez jamais commenté avant. Je vous promets, si vous n'aimez pas vous souhaitez vous l'avez fait quand vous revenez à l'expression après quelques semaines.
Voici un lien vers une bonne source, http://www.regular-expressions.info/email.html.
Déterrer la saleté, mais je viens de tombé sur SHEmailValidator qui fait un travail parfait et a une belle interface.
De nombreux sites web fournissent des RegExes mais vous feriez bien d'apprendre et de comprendre et de vérifier que ce que vous voulez qu'il ne répond à vos besoins dans les RFC pour l'adresse de courriel formats.
Pour l'apprentissage de la RegEx, les langages interprétés peut être d'une grande simplifier et de banc d'essai.
Rubular est construit sur Ruby, mais c'est un bon moyen rapide de tester et de vérifier:
http://www.rubular.com/
Au-delà de cela, acheter la dernière édition de l'O'Reilly livre Mastering Regular Expressions.
Vous aurez envie de passer du temps à comprendre le premier 3 ou 4 chapitres.
Tout ce qui suit sera la construction de l'expertise hautement optimisé l'utilisation de RegEx.
Souvent une série de plus petits, plus faciles à gérer RegExes sont plus faciles à maintenir et à déboguer.
Ici est une extension de la Chaîne qui permet de valider un e-mail à Swift.
Copié à partir de la réponse à: Vérifiez qu'une adresse email est valide sur iOS
NSPredicate
sur iOS 2.0Vous ne devriez pas essayer d'utiliser les regex pour valider un e-mail. Avec en constante évolution Tld, votre validateur est incomplète ou inexacte. Au lieu de cela, vous devriez tirer parti d'Apple
NSDataDetector
bibliothèques qui va prendre une corde et d'essayer de voir si il y a connu les champs de données (e-mails, adresses, dates, etc). Apple SDK faire le gros du travail de se tenir à jour avec les Tld et vous pouvez sur le dos de leurs efforts!! 🙂Plus, si iMessage (ou tout autre champ de texte) ne pense pas que c'est un e-mail, devriez-vous envisager un e-mail?
J'ai mis cette fonction dans une
NSString
catégorie, la chaîne vous effectuez le test estself
.ou swift
String
extensionvalidate email objective-c
, cette question est le troisième résultat. Certaines choses sur l'internet n'a pas d'âge. 🙂NSDataDetector
n'existe PAS dans iOS 2.0 qui est ce que cette question a été/est d'environ.NSPredicate
n'existe pas dans iOS 2; il n'a pas été ajouté jusqu'à ce que iOS 3.