Hier ist die vernünftige Lösung:
"DIE ANGEMESSENE LÖSUNG"
Wird seit Jahren in vielen großvolumigen Apps verwendet und getestet.
1 - es vermeidet die vielen schrecklichen Regex-Fehler, die Sie oft in diesen Vorschlägen sehen
2 - Es erlaubt KEINE dummen E-Mails wie "x @ x", die unter bestimmten RFCs als gültig gelten, aber völlig albern sind, nicht als E-Mails verwendet werden können und die Ihre Support-Mitarbeiter sofort ablehnen würden und die alle Mailer-Dienste (Mailchimp, Google, Aws usw.) lehnen einfach ab. Wenn Sie (aus irgendeinem Grund) eine Lösung benötigen, die Zeichenfolgen wie 'x @ x' zulässt, verwenden Sie eine andere Lösung.
3 - Der Code ist sehr, sehr, sehr verständlich
4 - es ist KISS, zuverlässig und auf kommerziellen Apps mit einer enormen Anzahl von Benutzern bis zur Zerstörung getestet
5 - ein technischer Punkt, das Prädikat ist ein globales, wie Apple es vorschreibt (achten Sie auf Code-Vorschläge, die dies nicht haben)
let __firstpart = "[A-Z0-9a-z]([A-Z0-9a-z._%+-]{0,30}[A-Z0-9a-z])?"
let __serverpart = "([A-Z0-9a-z]([A-Z0-9a-z-]{0,30}[A-Z0-9a-z])?\\.){1,5}"
let __emailRegex = __firstpart + "@" + __serverpart + "[A-Za-z]{2,8}"
let __emailPredicate = NSPredicate(format: "SELF MATCHES %@", __emailRegex)
extension String {
func isEmail() -> Bool {
return __emailPredicate.evaluate(with: self)
}
}
extension UITextField {
func isEmail() -> Bool {
return self.text!.isEmail()
}
}
So einfach ist das.
Erläuterung:
In der folgenden Beschreibung bedeutet "OC" ein gewöhnliches Zeichen - ein Buchstabe oder eine Ziffer.
__firstpart ... muss mit einem OK beginnen und enden . Für die Zeichen in der Mitte können Sie bestimmte Zeichen wie Unterstrich verwenden, aber Anfang und Ende müssen ein OK sein. (Allerdings ist es in Ordnung , nur ein OC zu haben , und das ist es, zum Beispiel: j@blah.com)
__serverpart ... Sie haben Abschnitte wie " bla ". welche wiederholen . (Also mail.city.fcu.edu Art der Sache.) Die Abschnitte müssen mit einem OC beginnen und enden , aber in der Mitte können Sie auch einen Bindestrich "-" haben. (Wenn Sie andere ungewöhnliche Zeichen zulassen möchten , z. B. den Unterstrich, fügen Sie einfach vor dem Bindestrich hinzu.) Es ist in Ordnung , einen Abschnitt zu haben, der nur ein OK ist. (Wie in joe@w.campus.edu) Sie können bis zu fünf Abschnitte haben, Sie müssen einen haben. Schließlich ist die TLD (wie z. B. .com) streng 2 bis 8 groß. Ändern Sie einfach diese "8", wie von Ihrer Support-Abteilung bevorzugt.
WICHTIG!
Sie müssen das Prädikat als global beibehalten und nicht jedes Mal erstellen.
Beachten Sie, dass dies das erste ist, was Apple in den Dokumenten über das gesamte Problem erwähnt .
Es ist sehr überraschend, wenn Sie Vorschläge sehen, die das Prädikat nicht zwischenspeichern.