167 Stimmen

Was sind bewährte Methoden zur Validierung von E-Mail-Adressen auf iOS 2.0?

Was ist der sauberste Weg, um eine E-Mail-Adresse zu validieren, die ein Benutzer auf iOS 2.0 eingibt?

HINWEIS: Dies ist eine historische Frage, die spezifisch für iOS 2.0 ist, und aufgrund ihres Alters und wie viele andere Fragen damit verknüpft sind, kann sie nicht entfernt und DARF NICHT in eine "moderne" Frage geändert werden.

0 Stimmen

Ich suche nach einer Kakao-Lösung. Ich verstehe die Gültigkeit von E-Mails und die Regeln für die Validierung von E-Mails. Da RegEx jedoch auf Cocoa Touch nicht einfach zugänglich ist, suche ich nach einer Cocoa Touch-Lösung zur Validierung. Nicht eine Liste der Regeln zur Validierung.

0 Stimmen

Bisher ist der beste Code-Vorschlag, den ich gefunden habe, die Verwendung von RegExKitLite und regulären Ausdrücken. Glücklicherweise ist es weniger schmerzhaft als es klingt.

0 Stimmen

Siehe Kommentare unten zur Verwendung von NSRegularExpression für Apps, die kein Betriebssystem unter 4.0 unterstützen.

7voto

Geek Punkte 403

Diese Funktion ist einfach und überprüft die E-Mail-Adresse gründlicher. Zum Beispiel darf laut RFC2822 eine E-Mail-Adresse keine zwei aufeinander folgenden Punkte enthalten, wie z. B. firstname..lastname@domain..com

Es ist auch wichtig, Anker in regulären Ausdrücken zu verwenden, wie in dieser Funktion zu sehen ist. Ohne Anker wird die folgende E-Mail-Adresse als gültig betrachtet: first;name)lastname@domain.com(blah, denn der Abschnitt lastname@domain.com ist gültig, während first;name) am Anfang und (blah am Ende ignoriert werden. Anker zwingen den regulären Ausdrucks-Engine, die gesamte E-Mail zu validieren.

Diese Funktion verwendet NSPredicate, das in iOS 2 nicht existiert. Leider kann es dem Fragenden nicht helfen, aber hoffentlich anderen mit neueren Versionen von iOS. Die regulären Ausdrücke in dieser Funktion können jedoch immer noch in RegExKitLite in iOS 2 angewendet werden. Und für diejenigen, die iOS 4 oder höher verwenden, können diese regulären Ausdrücke mit NSRegularExpression implementiert werden.

- (BOOL)isValidEmail:(NSString *)email
{
    NSString *regex1 = @"\\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,4}\\z";
    NSString *regex2 = @"^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*";
    NSPredicate *test1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex1];
    NSPredicate *test2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex2];
    return [test1 evaluateWithObject:email] && [test2 evaluateWithObject:email];
}

Siehe E-Mail-Adresse mit regulärem Ausdruck in Objective-C validieren.

6voto

hirak Punkte 77
NSString *emailString = textField.text; **// Speichern der eingegebenen E-Mail in einem String.**
**// Regularer Ausdruck zur Überprüfung des E-Mail-Formats.**
NSString *emailReg = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailReg];
if (([emailTest evaluateWithObject:emailString] != YES) || [emailStringisEqualToString:@""])
{
UIAlertView *loginalert = [[UIAlertView alloc] initWithTitle:@" E-Mail eingeben" message:@"abc@example.com Format" delegate:self
cancelButtonTitle:@"OK" otherButtonTitles:nil];

enter code here

[loginalert show];
[loginalert release];
}
Wenn die E-Mail ungültig ist, wird der Benutzer mit einem Alertfeld daran erinnert.
Hoffentlich ist dies für euch alle hilfreich.

4voto

Paul Redman Punkte 213

Ich habe festgestellt, dass die Verwendung eines regulären Ausdrucks gut funktioniert, um eine E-Mail-Adresse zu validieren.

Der Hauptnachteil von regulären Ausdrücken ist natürlich die Wartbarkeit, also kommentieren Sie wie nie zuvor. Ich verspreche Ihnen, wenn Sie es nicht tun, werden Sie sich wünschen, dass Sie es getan haben, wenn Sie nach ein paar Wochen zum Ausdruck zurückkehren.

Hier ist ein Link zu einer guten Quelle, http://www.regular-expressions.info/email.html.

3voto

Cyrille Punkte 24726

Ich habe gegraben und bin gerade auf SHEmailValidator gestoßen, das gute Arbeit leistet und eine schöne Benutzeroberfläche hat.

1voto

user656483 Punkte 21

Viele Websites bieten RegExes an, aber es wäre ratsam, sie zu lernen und zu verstehen sowie zu überprüfen, ob das, was Sie damit tun wollen, Ihren Anforderungen im offiziellen RFC für E-Mail-Adressformate entspricht.

Zum Erlernen von RegEx können interpretierte Sprachen eine große Erleichterung und Testumgebung sein. Rubular basiert auf Ruby, ist aber eine gute und schnelle Möglichkeit zum Testen und Überprüfen: http://www.rubular.com/

Darüber hinaus kaufen Sie die neueste Ausgabe des O'Reilly-Buchs Mastering Regular Expressions. Sie werden Zeit damit verbringen wollen, die ersten 3 oder 4 Kapitel zu verstehen. Alles danach wird den Aufbau von Expertise im hoch optimierten Einsatz von RegEx darstellen.

Oft sind eine Reihe kleinerer, leichter zu verwaltender RegExes einfacher zu warten und zu debuggen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X