दिलचस्प पोस्ट
अजगर से एक प्रोग्राम चलाएं, और इसे स्क्रिप्ट के बाद मारना जारी रखना है मामला असंवेदनशील फ्लास्क- SQLAlchemy प्रश्न डीबी स्तंभ में एक सूची को कैसे स्टोर करना है आईओएस ब्लॉक और स्वयं के लिए मजबूत / कमजोर संदर्भ ओएस एक्स तेंदुए पर पायथन के कई संस्करण ढेर और ढेर V8 (जावास्क्रिप्ट) में पता लगाया जा रहा है कि एक एप्लीकेशन स्थापित है या नहीं? डिफ़ॉल्ट जावा वर्ण एन्कोडिंग सेट करना? इकाई फ़्रेमवर्क के साथ Autonumber क्या होता है जब मैं Windows पर सिमलिंक के साथ एक रिपॉजिटरी क्लोन करता हूँ? फायरबेज और बैकेंड लॉजिक दृश्य स्टूडियो 2010 के लिए OpenCV-2.3 सेटअप करें JavaFX 2.2 में एसवीजी छवि फ़ंक्शन के भीतर डेटा-टूटेबल बाय-संदर्भ में नए कॉलम जोड़ना हमेशा कार्य नहीं करता है यूआईएलबल में टच इफेक्ट को संभालने और इसे इबेबैक्शन तक पहुंचाने के लिए

आईओएस 2.0 पर ईमेल पतों को मान्य करने के लिए सर्वोत्तम प्रथाएं क्या हैं

उपयोगकर्ता द्वारा आईओएस 2.0 में प्रवेश करने वाला ईमेल पता मान्य करने का सबसे साफ तरीका क्या है?

नोट : यह एक ऐतिहासिक सवाल है जो आईओएस 2.0 के लिए विशिष्ट है और अपनी उम्र के कारण और इसके साथ जुड़े कई अन्य प्रश्नों से इसे सेवानिवृत्त नहीं किया जा सकता है और इसे "आधुनिक" प्रश्न में परिवर्तित नहीं किया जाना चाहिए।

Solutions Collecting From Web of "आईओएस 2.0 पर ईमेल पतों को मान्य करने के लिए सर्वोत्तम प्रथाएं क्या हैं"

किसी ईमेल पते को मान्य करने के लिए नियमित अभिव्यक्ति का उपयोग करने के लिए उत्तर में महान विवरण बताते हैं कि RFC 5322 में निर्दिष्ट व्याकरण आदिम नियमित अभिव्यक्तियों के लिए बहुत जटिल है।

मैं एक असली पार्सर दृष्टिकोण की सलाह देता हूं जैसे कि एमकेईएमएलाएड्डर ।

जैसे कि नियमित नियमित अभिव्यक्ति समाधान DHValidation के इस संशोधन को देखें :

 - (BOOL) validateEmail: (NSString *) candidate { NSString *emailRegex = @"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}" @"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\" @"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-" @"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5" @"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-" @"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21" @"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@", emailRegex]; return [emailTest evaluateWithObject:candidate]; } 

आरएफसी पढ़ें लगभग सभी लोग सोचते हैं कि वे जानते हैं कि ईमेल पते को पार्स / साफ / मान्य करने के लिए कैसे गलत है।

http://tools.ietf.org/html/rfc2822 धारा 3.4.1 बहुत उपयोगी है। नोटिस

 dtext = NO-WS-CTL /;  गैर सफेद अंतरिक्ष नियंत्रण

                         % d33-90 /;  शेष यूएस-एएससीआईआई
                         % d94-126;  वर्ण जिसमें "[",
                                         ;  "]", या "\"

हां, इसका अर्थ है +, ', आदि सभी कानूनी हैं

मैंने अब तक सबसे अच्छा उपाय पाया है (और जो मैंने समाप्त कर दिया था) रेगेक्सकिइट लाइट को जोड़ने के लिए है जो कि एनएसएसटीइंग श्रेणियों के माध्यम से नियमित अभिव्यक्ति तक पहुंच प्रदान करता है।

यह परियोजना में जोड़ने के लिए काफी दर्द रहित है और एक बार जगह पर, नियमित अभिव्यक्ति ईमेल सत्यापन तर्क काम करेगा।

एक अच्छी शुरुआत तय करना है कि आप क्या करते हैं और आप एक ईमेल पते के रूप में स्वीकार नहीं करना चाहते हैं?

99% ईमेल पते इस तरह दिखते हैं: bob.smith@foo.com या fred@bla.edu

हालांकि, यह तकनीकी रूप से कानूनी है जैसा कि एक ईमेल पता है: च !#$%&'*+-/=?^_ {|} ~ "हा!" @ Com

शायद शीर्ष स्तर के डोमेन के लिए दुनिया में केवल वैध ईमेल हैं, और लगभग कोई भी उन अन्य वर्णों (विशेषकर उद्धरण और बैकटीक्स) का उपयोग नहीं करता है, इसलिए आप यह मान सकते हैं कि ये सभी अमान्य बातें करने हैं लेकिन आपको एक सचेत निर्णय के रूप में ऐसा करना चाहिए।

इसके अलावा, पॉल क्या कहता है और इस तरह से एक नियमित अभिव्यक्ति के साथ इनपुट का मिलान करने का प्रयास करें: ^ [ए-जेड 0- 9 ._% + -] + @ [ए-जे 0-9 .-] +। [एजी] { 2,} $

वह एक बहुत सारे सभी के ईमेल पते से मेल खाएंगे।

जबकि नियमित अभिव्यक्ति पर फ़ोकस अच्छा है, लेकिन यह केवल एक पहला और आवश्यक कदम है। ऐसे अन्य कदम भी हैं जो एक अच्छी मान्यता रणनीति के लिए जिम्मेदार हैं।

मेरे सिर के शीर्ष पर दो बातें हैं:

  1. डोमेन वास्तव में मौजूद है यह सुनिश्चित करने के लिए DNS सत्यापन।

  2. डीएनएस सत्यापन के बाद, आप एक एसएमटीपी सत्यापन करना चुन सकते हैं। यह देखने के लिए कि वास्तव में उपयोगकर्ता मौजूद है, SMTP सर्वर पर एक कॉल भेजें।

इस तरह से आप सभी प्रकार की उपयोगकर्ता त्रुटियों को पकड़ सकते हैं और सुनिश्चित कर सकते हैं कि यह एक वैध ईमेल है।

यह फ़ंक्शन सरल है और अभी तक ईमेल पते को और अधिक अच्छी तरह से जांचता है। उदाहरण के लिए, आरएफसी 2822 के अनुसार एक ईमेल पता में एक पंक्ति में दो अवधि शामिल नहीं होनी चाहिए, जैसे कि firstname..lastname @ domain..com

इस फ़ंक्शन में देखे गए नियमित अभिव्यक्तियों में एंकर का उपयोग करना भी महत्वपूर्ण है। एन्कर्स के बिना निम्नलिखित ईमेल पते को मान्य माना जाता है: प्रथम; नाम) lastname@domain.com (blah क्योंकि initialname@domain.com अनुभाग मान्य है, पहले की ओर ध्यान दे रहा है, नाम) शुरुआत में और (blah अंत में। पूरे ईमेल को मान्य करने के लिए नियमित अभिव्यक्ति इंजन

यह फ़ंक्शन एनएसपीडिकेट का उपयोग करता है जो आईओएस 2 में मौजूद नहीं है। दुर्भाग्य से यह पूछने वालों की मदद नहीं कर सकता है, लेकिन उम्मीद है कि आईओएस के नए संस्करणों के साथ दूसरों की मदद करेगा। इस फ़ंक्शन का नियमित अभिव्यक्ति अभी भी आईओएस 2 में RegExKitLite पर लागू किया जा सकता है। और उन लोगों के लिए जो आईओएस 4 या बाद के संस्करण का इस्तेमाल करते हैं, इन नियमित अभिव्यक्तियों को एनएसआरग्युलर एक्सपशन के साथ लागू किया जा सकता है।

 - (BOOL)isValidEmail:(NSString *)email { NSString *regex1 = @"\\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{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]; } 

उद्देश्य-सी में नियमित अभिव्यक्ति का उपयोग करके ईमेल पता मान्य करें

 NSString *emailString = textField.text; **// storing the entered email in a string.** **// Regular expression to checl the email format.** 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:@" Enter Email in" message:@"abc@example.com format" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; enter code here [loginalert show]; [loginalert release]; } If email is invalid, it will remind the user with an alert box. Hope this might be helpful for you all. 

मैंने पाया है कि नियमित अभिव्यक्ति का उपयोग करना एक ईमेल पते को मान्य करने के लिए काफी अच्छी तरह से काम करता है।

पाठ्यक्रम के नियमित अभिव्यक्ति के लिए प्रमुख नकारात्मकता है, इसलिए इस तरह की टिप्पणी जैसी आपने कभी टिप्पणी नहीं की है। मैं आपसे वादा करता हूँ, यदि आप नहीं करते हैं, तो आप इच्छा करेंगे कि जब आप कुछ हफ्तों के बाद अभिव्यक्ति पर वापस जाएँगे।

यहां एक अच्छे स्रोत के लिए एक लिंक है, http://www.regular-expressions.info/email.html

गंदगी खुदाई, लेकिन मैं बस SHEmailValidator पर ठोकर खाई जो एक आदर्श काम करता है और एक अच्छा इंटरफ़ेस है

कई वेब साइटें रेगएक्स प्रदान करती हैं, लेकिन आप उन्हें जानने और समझने के लिए अच्छी तरह से करना चाहते हैं, साथ ही यह सत्यापित करें कि आप जो करना चाहते हैं, वह आधिकारिक आरएफसी के भीतर ईमेल पते प्रारूपों के लिए आपकी आवश्यकताओं को पूरा करता है।

रेगएक्स सीखने के लिए, व्याख्या की गई भाषाएं एक महान सरलीकृत और टेस्टबेड हो सकती हैं। रूबल्य रूबी पर बनाया गया है, लेकिन परीक्षण और सत्यापित करने का एक अच्छा त्वरित तरीका है: http://www.rubular.com/

इसके अलावा, O'Reilly पुस्तक मास्टरींग रेगुलर एक्सप्रेशंस के नवीनतम संस्करण को खरीदें। आप पहले 3 या 4 अध्यायों को समझने के लिए समय व्यतीत करना चाहते हैं उसके बाद सब कुछ अत्यधिक अनुकूलित किए गए RegEx उपयोग पर विशेषज्ञता बन जाएगा।

प्रायः छोटे, रेजिजेक्स का प्रबंधन करने में आसानी की एक श्रृंखला बनाए रखना और डिबग करना आसान है।

यहां स्ट्रिंग का एक एक्सटेंशन है जो स्विफ्ट में एक ईमेल को मान्य करता है

 extension String { func isValidEmail() -> Bool { let stricterFilter = false let stricterFilterString = "^[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$" let laxString = "^.+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$" let emailRegex = stricterFilter ? stricterFilterString : laxString let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegex) return emailTest.evaluate(with: self) } } 

उत्तर से कॉपी किया गया: आईओएस पर ईमेल पता मान्य है या नहीं

आपको ई-मेल सत्यापित करने के लिए regex का उपयोग करने का प्रयास नहीं करना चाहिए। कभी भी बदलते TLDs के साथ, आपका सत्यापनकर्ता या तो अधूरा या गलत है इसके बजाय, आपको ऐप्पल के NSDataDetector लाइब्रेरी का लाभ उठाना चाहिए, जो एक स्ट्रिंग लेंगे और यह देखने का प्रयास करें कि क्या कोई ज्ञात डाटा फ़ील्ड (ईमेल, पता, तिथियां, आदि) हैं। ऐप्पल एसडीके टीडीडी के साथ अद्यतित रखने की भारी भार उठाएगा और आप अपने प्रयासों को बंद कर सकते हैं !! 🙂

साथ ही, अगर iMessage (या कोई अन्य पाठ क्षेत्र) यह नहीं सोचता कि यह ईमेल है, तो क्या आपको एक ईमेल पर विचार करना चाहिए?

मैं इस फ़ंक्शन को एक NSString श्रेणी में रखता हूं, इसलिए आप जिस स्ट्रिंग का परीक्षण कर रहे हैं वह self

 - (BOOL)isValidEmail { // Trim whitespace first NSString *trimmedText = [self stringByTrimmingCharactersInSet:NSCharacterSet.whitespaceAndNewlineCharacterSet]; if (self && self.length > 0) return NO; NSError *error = nil; NSDataDetector *dataDetector = [[NSDataDetector alloc] initWithTypes:NSTextCheckingTypeLink error:&error]; if (!dataDetector) return NO; // This string is a valid email only if iOS detects a mailto link out of the full string NSArray<NSTextCheckingResult *> *allMatches = [dataDetector matchesInString:trimmedText options:kNilOptions range:NSMakeRange(0, trimmedText.length)]; if (error) return NO; return (allMatches.count == 1 && [[[allMatches.firstObject URL] absoluteString] isEqual:[NSString stringWithFormat:@"mailto:%@", self]]); } 

या एक तेज String विस्तार के रूप में

 extension String { func isValidEmail() -> Bool { let trimmed = self.trimmingCharacters(in: .whitespacesAndNewlines) guard !trimmed.isEmpty, let dataDetector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) else { return false } let allMatches = dataDetector.matches(in: trimmed, options: [], range: NSMakeRange(0, trimmed.characters.count)) return allMatches.count == 1 && allMatches.first?.url?.absoluteString == "mailto:\(trimmed)" } } 
 // Method Call NSString *email = @"Your Email string.."; BOOL temp = [self validateEmail:email]; if(temp) { // Valid } else { // Not Valid } // Method description - (BOOL) validateEmail: (NSString *) email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; BOOL isValid = [emailTest evaluateWithObject:email]; return isValid; }