यहाँ उचित समाधान है:
"उचित समाधान"
कई विशाल मात्रा वाले ऐप्स में वर्षों तक उपयोग और परीक्षण किया गया।
1 - यह कई भयानक regex गलतियों से बचा जाता है जो आप अक्सर इन सुझावों में देखते हैं
2 - यह "x @ x" जैसे बेवकूफ ईमेल की अनुमति नहीं देता है, जो कुछ RFC के तहत मान्य माने जाते हैं, लेकिन पूरी तरह से मूर्ख हैं, इन्हें ईमेल के रूप में इस्तेमाल नहीं किया जा सकता है, और जो आपके सहायक कर्मचारी तुरंत अस्वीकार कर देंगे, और जो सभी मेलर सेवाओं (mailchimp, google, aws, आदि) को अस्वीकार कर दें। यदि (किसी कारण से) आपको एक समाधान की आवश्यकता होती है जो 'x @ x' जैसे स्ट्रिंग्स की अनुमति देता है, तो दूसरे समाधान का उपयोग करें।
3 - कोड बहुत, बहुत, बहुत समझने योग्य है
4 - यह KISS, विश्वसनीय है, और उन की भारी संख्या के साथ वाणिज्यिक क्षुधा पर विनाश करने के लिए परीक्षण किया
5 - एक तकनीकी बिंदु, विधेय एक वैश्विक है, जैसा कि एप्पल का कहना है कि यह होना चाहिए (कोड सुझावों के लिए बाहर देखो जो यह नहीं है)
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()
}
}
इट्स दैट ईजी।
स्पष्टीकरण:
निम्नलिखित विवरण में, "OC" का अर्थ है साधारण वर्ण - एक अक्षर या एक अंक।
__firstpart ... को OC के साथ शुरू और समाप्त करना है। बीच के पात्रों के लिए आपके पास कुछ पात्र हो सकते हैं जैसे कि अंडरस्कोर, लेकिन शुरुआत और अंत में एक OC होना चाहिए। (हालांकि, केवल एक OC होना ठीक है और यह उदाहरण के लिए: j@blah.com है)
__serverpart ... आपके पास "blah" जैसे अनुभाग हैं। जो दोहराते हैं । (तो mail.city.fcu.edu प्रकार की बात।) अनुभागों को OC के साथ शुरू और समाप्त करना पड़ता है , लेकिन बीच में आपके पास एक डैश भी हो सकता है "-"। (यदि आप वहां अन्य असामान्य वर्णों को अनुमति देना चाहते हैं , तो शायद अंडरस्कोर, केवल डैश से पहले जोड़ दें।) यह ठीक है एक अनुभाग है जो सिर्फ एक ओसी है। आप पांच वर्गों तक हो सकती हैं (joe@w.campus.edu में के रूप में), तो आप के लिए है एक है। अंत में टीएलडी (जैसे .com) का आकार कड़ाई से 2 से 8 है । जाहिर है, बस उस "8" को अपने समर्थन विभाग द्वारा पसंद के अनुसार बदल दें।
जरूरी !
आपको एक वैश्विक के रूप में विधेय को रखना चाहिए, हर बार इसका निर्माण न करें।
ध्यान दें कि यह पहली बात है कि Apple डॉक्स में पूरे मुद्दे के बारे में उल्लेख करता है ।
यह बहुत आश्चर्य की बात है जब आप सुझावों को देखते हैं जो विधेय को कैश नहीं करते हैं।