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.
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.
0 Stimmen
Bitte beachten Sie, dass dies im Jahr 2009 gefragt wurde, als es kein NSRegularExpression auf dem iPhone gab.
0 Stimmen
Menschen, die iOS 3.0 verwenden, können
NSPredicate
verwenden; Menschen, die iOS 4.0 verwenden, könnenNSRegularExpression
verwenden.1 Stimmen
Da dies die kanonische Frage zur Validierung von E-Mail-Adressen zu sein scheint, macht es Sinn, sie mit verbesserten Antworten zu aktualisieren, während iOS reift. In diesem Sinne habe ich eine Antwort hinzugefügt, die iOS's
NSDataDetector
verwendet, um E-Mail-Adressen zu validieren: stackoverflow.com/a/23547905/2575500 Stimmen
Dies ist die kanonische Frage für iOS 2.
NSDataDetector
existierte nicht in iOS 2.2 Stimmen
Diese Frage scheint nicht zum Thema zu passen, da sie sich auf iOS 2.0 bezieht, das vor vielen Jahren veraltet wurde.