İşte makul çözüm:
"MAKUL ÇÖZÜM"
Birçok büyük hacimli uygulamada yıllarca kullanılmış ve test edilmiştir.
1 - bu önerilerde sıkça gördüğünüz birçok korkunç normal ifade hatasını önler
2 - bu mu DEĞİL gibi aptal e-postalara izin "x @ x" belirli RFC'lere altında geçerli olduğu düşünülen, ama tamamen saçma, e-postaları olarak kullanılamaz edildiğiniz ve destek personeli anında reddedecek ve tüm hangilerinin posta hizmetleri (mailchimp, google, aws, vb.) basitçe reddeder. (Herhangi bir nedenle) 'x @ x' gibi dizelere izin veren bir çözüme ihtiyacınız varsa, başka bir çözüm kullanın.
3 - kod çok, çok, çok anlaşılabilir
4 - KISS, güvenilir ve çok sayıda kullanıcılı ticari uygulamalarda imha için test edildi
5 - teknik bir nokta, yüklem küreseldir, Apple olması gerektiği gibi (buna sahip olmayan kod önerilerine dikkat edin)
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()
}
}
İşte bu kadar kolay.
Açıklama:
Aşağıdaki açıklamada, "OC" sıradan karakter anlamına gelir - bir harf veya rakam.
__firstpart ... bir OC ile başlayıp bitmelidir . Karakter için ortada sen olabilir bazı tür çizgi gibi karakterler, ancak başlangıç ve bitiş bir OC olmak zorunda. (Ancak, yalnızca bir OC'ye sahip olmak sorun değildir ve işte bu, örneğin: j@blah.com)
__serverpart ... "falan" gibi bölümleriniz var . hangi tekrar . (Yani mail.city.fcu.edu türü.) Bölümler bir OC ile başlayıp bitmelidir , ancak ortada da bir tire işareti "-" olabilir. (Eğer izin vermek isterseniz başka orada sıradışı karakterler, belki alt çizgi basitçe çizgi önce ekleyin.) It adlı Tamam sadece bir kesite sahip olması için bir OC. (Joe@w.campus.edu adresinde olduğu gibi) En fazla beş bölümünüz olabilir, bir bölümünüz olması gerekir. Son olarak TLD (.com gibi) kesinlikle 2 ila 8 boyutunda. Açıkçası, bu "8" i destek departmanınızın tercih ettiği şekilde değiştirin.
ÖNEMLİ!
Yüklemi küresel olarak tutmalı, her seferinde inşa etmemelisin.
Apple'ın dokümanlardaki tüm sorun hakkında bahsettiği ilk şey olduğunu unutmayın .
Yüklemi önbelleğe almayan önerileri görmek çok şaşırtıcı.