Swift में Email वैलिडेशन 2025: आसान से एडवांस तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift में Email वैलिडेशन: 2025 में यह क्यों ज़रूरी है और गलतियों से कैसे बचें

\n

नमस्ते डेवलपर! अगर आपने कभी iOS पर रजिस्ट्रेशन फॉर्म या लॉगिन स्क्रीन बनाई है, तो आपने यह सवाल ज़रूर पूछा होगा: "यूज़र ने असली email डाला है या सिर्फ 'qwerty@' टाइप किया है?" यह सवाल इतना लोकप्रिय है कि Stack Overflow पर इसके हज़ारों व्यूज़ हैं — और यह सही भी है। 2025 में, जब यूज़र ऐप से सबसे तेज़ और आसान अनुभव चाहते हैं, गलत वैलिडेशन आपके ग्राहकों को खोने का कारण बन सकता है।

\n

इस आर्टिकल में हम Swift में email वैलिडेशन के बेस्ट प्रैक्टिसेज पर चर्चा करेंगे। आप सीखेंगे कि पहिए का पुनः आविष्कार कैसे न करें, Regex हमेशा सही क्यों नहीं होता, और Apple की सुविधाओं का उपयोग करके कोड को क्लीन और विश्वसनीय कैसे बनाएं। चलिए शुरू करते हैं!

\n\n

Email वैलिडेशन एक सिरदर्द क्यों है?

\n

सोचना आसान है: एक Regex लो, फॉर्मेट चेक करो — और काम खत्म। लेकिन असलियत में पेचीदगियाँ हैं। Email पतों में डॉट्स, प्लस, स्पेशल कैरेक्टर और यहाँ तक कि गैर-लैटिन अक्षर (इंटरनेशनलाइज़्ड डोमेन) भी हो सकते हैं। अगर आप बहुत सख्त चेक लगाएंगे, तो सही पते भी ब्लॉक हो जाएंगे। अगर बहुत ढीला चेक होगा, तो गलत पते पास हो जाएंगे।

\n

2025 में भी RFC 5321 और RFC 5322 स्टैंडर्ड प्रासंगिक हैं, लेकिन व्यवहार में हम शायद ही 100% email वैलिडेशन करते हैं — आमतौर पर स्पष्ट गलतियाँ पकड़ना काफी है (@ का न होना, स्पेस, गलत डोमेन)। मुख्य नियम: सबसे अच्छा वैलिडेशन कन्फर्मेशन ईमेल भेजना है। लेकिन इनपुट स्टेज पर हम यूज़र को तुरंत फीडबैक देना चाहते हैं।

\n\n

तरीका 1: रेगुलर एक्सप्रेशन (Regex) — क्लासिक तरीका

\n

सबसे आम तरीका Regex का उपयोग करना है। Swift में यह NSRegularExpression या स्ट्रिंग के बिल्ट-इन मेथड्स से किया जाता है। आइए एक काम का उदाहरण देखें।

\n\n
import Foundation\n\nfunc isValidEmail(_ email: String) -> Bool {\n    // सरल लेकिन प्रभावी रेगुलर एक्सप्रेशन\n    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}"\n    let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex)\n    return emailPredicate.evaluate(with: email)\n}\n\n// उपयोग का उदाहरण\nprint(isValidEmail("hello@pythonlib.ru"))   // true\nprint(isValidEmail("invalid-email"))       // false\n
\n\n

फायदे: तेज़, स्पष्ट, आसानी से मेंटेन किया जा सकता है।

\n

नुकसान: इंटरनेशनलाइज़्ड डोमेन (IDN) और कुछ कानूनी स्पेशल कैरेक्टर को सपोर्ट नहीं करता। 95% प्रोजेक्ट्स के लिए यह काफी है, लेकिन अगर आप इंटरनेशनल ऐप बना रहे हैं — आगे पढ़ें।

\n\n

2025 के लिए बेहतर Regex

\n

अगर आप आगे रहना चाहते हैं, तो आधुनिक स्टैंडर्ड को सपोर्ट करने वाला एक्सप्रेशन उपयोग करें:

\n\n
func isValidEmailStrict(_ email: String) -> Bool {\n    // RFC 5322 पर आधारित सख्त पैटर्न (सरलीकृत)\n    let strictRegex = "(?:[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])?|\\\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-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])+)\\\\])"\n    return NSPredicate(format: "SELF MATCHES %@", strictRegex).evaluate(with: email.lowercased())\n}\n
\n\n

ध्यान दें: यह एक्सप्रेशन स्क्वेयर ब्रैकेट में IP एड्रेस और कोट्स को सपोर्ट करता है। लेकिन इसे सावधानी से उपयोग करें — सरल प्रोजेक्ट्स के लिए यह ओवरकिल हो सकता है।

\n\n

तरीका 2: NSDataDetector — Apple का बिल्ट-इन वैलिडेशन

\n

क्या आप जानते हैं कि iOS में एक बिल्ट-इन डेटा डिटेक्टर है? यह email, लिंक, फोन नंबर और डेट को पहचान सकता है। और इसके लिए Regex की ज़रूरत नहीं है। बहुत उपयोगी है, है ना?

ब्लॉग

पुस्तक अनुशंसाएँ