ब्लॉग

ईमेल रेगुलर एक्सप्रेशन: ईमेल पतों को मान्य करने के लिए पैटर्न

debounce
लेख
18 मिनट पढ़ा

चाबी छीन लेना

  • ईमेल रेगुलर एक्सप्रेशन केवल फॉर्मेट की जांच करता है: यह पुष्टि नहीं कर सकता कि कोई पता वास्तव में मौजूद है या सक्रिय है।
  • एक अच्छी तरह से लिखा गया ईमेल रेगुलर एक्सप्रेशन लोकल पार्ट, @ सिंबल, डोमेन नाम और टॉप-लेवल डोमेन (TLD) को कवर करता है।
  • रेगुलर एक्सप्रेशन (Regex) आपकी सत्यापन प्रक्रिया की पहली परत होनी चाहिए, न कि एकमात्र। विश्वसनीय परिणामों के लिए इसे रीयल-टाइम ईमेल सत्यापन के साथ संयोजित करें।

आपने एक साइनअप फॉर्म बनाया है, और किसी ने ईमेल फ़ील्ड में “john@” दर्ज कर दिया है। अगर कोई सत्यापन नहीं है, तो यह मान सीधे आपके डेटाबेस में चला जाता है जैसे कि कुछ गलत नहीं हुआ हो। फिर आपका अगला अभियान इसे भेजता है, आपका ESP एक हार्ड बाउंस रिकॉर्ड करता है, और एक ऐसी गलती के कारण आपकी प्रेषक प्रतिष्ठा को थोड़ा नुकसान होता है जिसे पूरी तरह से टाला जा सकता था।

ईमेल रेगुलर एक्सप्रेशन (regex) इस तरह के गलत डेटा से बचाव की पहली परत है। यह एक पैटर्न-मैचिंग नियम है जो इनपुट को स्टोर या प्रोसेस करने से पहले यह जांचता है कि वह सही संरचना वाले ईमेल पते जैसा दिखता है या नहीं। ईमेल रेगुलर एक्सप्रेशन कैसे काम करता है और इसकी कमियां क्या हैं, यह समझने से आपको अपने सिस्टम में अधिक विश्वसनीय सत्यापन स्थापित करने में मदद मिलती है।

ईमेल रेगुलर एक्सप्रेशन (Regex) क्या है?

एक रेगुलर एक्सप्रेशन (regex) वर्णों का एक क्रम होता है जो खोज पैटर्न को परिभाषित करता है। ईमेल रेगुलर एक्सप्रेशन एक ऐसा पैटर्न है जिसे विशेष रूप से वैध ईमेल पते की संरचना के अनुरूप स्ट्रिंग से मिलान करने के लिए लिखा जाता है।

जब कोई उपयोगकर्ता फ़ॉर्म सबमिट करता है, तो इनपुट पर रेगुलर एक्सप्रेशन (regex) चलता है। यदि स्ट्रिंग पैटर्न से मेल खाती है (सही अक्षर, सही जगह पर @ चिह्न, एक मान्य डोमेन संरचना), तो यह पास हो जाता है। यदि यह मेल नहीं खाता है, तो फ़ॉर्म इनपुट को अस्वीकार कर सकता है और उपयोगकर्ता को इसे सही करने के लिए कह सकता है।

ईमेल रेगुलर एक्सप्रेशन (regex) इनपुट या फॉर्म लेवल पर काम करता है। इसका काम डेटा के सिस्टम में प्रवेश करने से पहले ही स्पष्ट फॉर्मेटिंग त्रुटियों को पकड़ना है। यह किसी सर्वर से संपर्क नहीं करता या यह जांच नहीं करता कि पता वास्तविक है या नहीं; यह पूरी तरह से टेक्स्ट की संरचनात्मक जांच करता है।

ईमेल रेगुलर एक्सप्रेशन क्यों महत्वपूर्ण हैं?

आपके डेटाबेस में दर्ज होने वाला हर अमान्य पता आगे चलकर समस्या पैदा करता है। इससे बाउंस रेट बढ़ता है, आपकी रिपोर्टिंग में गड़बड़ी होती है और उन संपर्कों पर सेंड क्रेडिट बर्बाद होते हैं जिन्हें आपके संदेश कभी नहीं मिल पाते।

रेगुलर एक्सप्रेशन (Regex) वैलिडेशन सबसे स्पष्ट त्रुटियों को शुरुआत में ही पकड़ लेता है: @ चिह्न का न होना, खाली लोकल पार्ट और गलत तरीके से बने डोमेन नाम। इन्हें एंट्री पॉइंट पर ही फ़िल्टर करके, आप अपने बैकएंड प्रोसेस में कोई रुकावट डाले बिना अपने डेटाबेस को साफ-सुथरा रख सकते हैं।

इसका प्रभाव कई टीमों पर पड़ता है। विपणनकर्ताओं के लिए, सुव्यवस्थित डेटा संग्रह से शुरुआत से ही बेहतर परिणाम मिलते हैं। उत्पाद इंजीनियरों के लिए, यह एक सरल, कम विलंबता वाली जाँच है जो बिना किसी बाहरी API कॉल के क्लाइंट-साइड या सर्वर-साइड पर चलती है। डेटा टीमों के लिए, यह उन रिकॉर्डों की संख्या को कम करता है जिन्हें मैन्युअल रूप से समीक्षा या सुधार की आवश्यकता होती है।

वैसे, रेगुलर एक्सप्रेशन (regex) इसलिए कुशल है क्योंकि यह हल्का-फुल्का होता है; यह केवल फॉर्मेट की जाँच करता है। इससे आगे किसी भी चीज़ के लिए, आपको अतिरिक्त परतों की आवश्यकता होती है।

ईमेल रेगुलर एक्सप्रेशन कैसे काम करता है

रेगुलर एक्सप्रेशन (Regex) एक टेक्स्ट स्ट्रिंग को परिभाषित पैटर्न के साथ अक्षर-दर-अक्षर मिलान करके काम करता है। पैटर्न का प्रत्येक भाग यह बताता है कि क्या अनुमत है: विशिष्ट अक्षर, अक्षर वर्ग, पुनरावृत्ति नियम या आवश्यक अनुक्रम।

ईमेल पते के लिए, पैटर्न को तीन संरचनात्मक भागों को ध्यान में रखना होगा:

ईमेल सत्यापन रेगुलर एक्सप्रेशन
  1. स्थानीय भाग: @ चिह्न से पहले सब कुछ (जैसे, john.doe)
  2. प्रतीक: बिल्कुल एक, सही स्थिति में
  3. डोमेन: @ के बाद डोमेन नाम और TLD (उदाहरण के लिए, example.com)

एक बुनियादी ईमेल रेगुलर एक्सप्रेशन यह जांचता है कि तीनों भाग मौजूद हैं और प्रत्येक भाग में मौजूद वर्ण मान्य हैं। उदाहरण के लिए, पैटर्न ^[^\s@]+@[^\s@]+\.[^\s@]+$ इस प्रकार पढ़ा जाता है: स्ट्रिंग की शुरुआत, एक या अधिक वर्ण जो स्पेस या @ नहीं हैं, फिर एक @, फिर अन्य गैर-स्पेस/गैर-@ वर्ण, फिर एक डॉट, फिर अन्य गैर-स्पेस/गैर-@ वर्ण, स्ट्रिंग का अंत।

यह जानबूझकर दिया गया एक सरल उदाहरण है। वास्तविक दुनिया के पैटर्न इस बात पर निर्भर करते हुए अधिक विशिष्ट हो जाते हैं कि आप वैध माने जाने वाले को कितनी सख्ती से परिभाषित करना चाहते हैं।

ईमेल रेगुलर एक्सप्रेशन में प्रयुक्त सामान्य नियम

ईमेल रेगुलर एक्सप्रेशन पैटर्न कुछ व्यावहारिक नियमों का पालन करते हैं जो यह परिभाषित करते हैं कि एक वैध पता कैसा दिखता है। ये हर अपवाद को कवर नहीं करते, लेकिन ये उस संरचना को दर्शाते हैं जिसका उपयोग अधिकांश सिस्टम रोज़मर्रा के सत्यापन के लिए करते हैं।

स्थानीय भाग के नियम (@ से पहले):

  • अक्षर (a–z, A–Z) और अंक (0–9) अनुमत हैं।
  • विशेष वर्णों में बिंदु (.), अंडरस्कोर (_), हाइफ़न (-) और प्लस चिह्न (+) शामिल हो सकते हैं।
  • स्थानीय भाग की शुरुआत या अंत में बिंदु नहीं हो सकता।
  • लगातार बिंदुओं (..) की अनुमति नहीं है।
  • संबंधित RFC विनिर्देशों के अनुसार, लंबाई तकनीकी रूप से 64 वर्णों तक सीमित है।

डोमेन नियम (@ के बाद):

  • डोमेन में डोमेन नाम और टीएलडी को अलग करने वाला कम से कम एक बिंदु होना चाहिए (उदाहरण के लिए, example.com)।
  • बिंदुओं के बीच के लेबल में अक्षर, अंक और हाइफ़न हो सकते हैं, लेकिन वे हाइफ़न से शुरू या समाप्त नहीं हो सकते।
  • TLD कम से कम दो अक्षरों का होना चाहिए। अधिकांश आधुनिक पैटर्न .io, .museum, या .photography जैसे नए एक्सटेंशन को कवर करने के लिए अलग-अलग लंबाई के TLD स्वीकार करते हैं।

पूरे पते पर लागू होने वाले सामान्य प्रतिबंध:

  • पते में कहीं भी स्पेस की अनुमति नहीं है।
  • @ चिह्न केवल एक बार ही आना चाहिए।
  • RFC 5321 के अनुसार, कुल पते की लंबाई 254 वर्णों से अधिक नहीं होनी चाहिए।

ईमेल रेगुलर एक्सप्रेशन पैटर्न के प्रकार

सभी ईमेल रेगुलर एक्सप्रेशन पैटर्न एक ही उद्देश्य की पूर्ति नहीं करते। सही पैटर्न का चुनाव इस बात पर निर्भर करता है कि आपकी सत्यापन प्रक्रिया कितनी सख्त होनी चाहिए।

सरल पैटर्न बुनियादी बातों को शामिल करते हैं: एक स्थानीय भाग, एक @, एक डोमेन और एक TLD। इन्हें लिखना आसान है, पढ़ना सरल है और साइनअप फ़ॉर्म और संपर्क फ़ील्ड जैसे अधिकांश मानक उपयोग मामलों के लिए ये अच्छी तरह काम करते हैं। हालांकि, इसमें कुछ ऐसी स्ट्रिंग्स को स्वीकार करने की क्षमता होती है जो तकनीकी रूप से विशिष्ट नियमों का उल्लंघन करती हैं, और ये गलती से कुछ असामान्य लेकिन मान्य पतों को भी अस्वीकार कर सकते हैं।

जावास्क्रिप्ट में आमतौर पर इस्तेमाल होने वाला एक सरल पैटर्न इस प्रकार दिखता है:

/^[^\s@]+@[^\s@]+\.[^\s@]+$/

जटिल पैटर्न ईमेल विनिर्देशों को अधिक सटीक रूप से लागू करने का प्रयास करते हैं। वे अनुमत वर्णों को स्पष्ट रूप से परिभाषित करते हैं, डॉट प्लेसमेंट नियमों को लागू करते हैं, स्थानीय भाग में उद्धृत स्ट्रिंग का ध्यान रखते हैं, और डोमेन में आईपी पते के लिटरल को संभालते हैं। ये पैटर्न अधिक सटीक होते हैं, लेकिन इन्हें पढ़ना और बनाए रखना काफी कठिन होता है।

कई उत्पादन प्रणालियों में उपयोग किया जाने वाला एक अधिक विस्तृत पैटर्न:

/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/

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

व्यावहारिक समझौता

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

रेगुलर एक्सप्रेशन (Regex) का उपयोग करके ईमेल सत्यापन के लिए सर्वोत्तम अभ्यास

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

  • अपने पैटर्न को पठनीय रखें: एक ऐसा रेगुलर एक्सप्रेशन जिसे आपकी टीम का कोई भी सदस्य मैनुअल के बिना समझ न सके, रखरखाव के लिहाज़ से जोखिम भरा होता है। अधिकतर मामलों में, एक स्पष्ट और मध्यम रूप से विस्तृत पैटर्न, RFC मानकों में परिभाषित हर जटिल स्थिति से मेल खाने वाले पैटर्न की तुलना में अधिक व्यावहारिक होता है।
रेगुलर एक्सप्रेशन का उपयोग करके ईमेल का सत्यापन
  • तैनाती से पहले विभिन्न प्रकार के इनपुट पर परीक्षण करें: स्थानीय भाग में + वाले पते जैसे अपवाद मामलों को शामिल करें ([ईमेल संरक्षित]), उपडोमेन ([ईमेल संरक्षित]), और नए टीएलडी ([ईमेल संरक्षित]एक ऐसा पैटर्न जो वैध इनपुट पर विफल हो जाता है, वास्तविक उपयोगकर्ताओं के लिए परेशानी पैदा करता है।
  • अतिरिक्त सत्यापन के साथ रेगुलर एक्सप्रेशन को संयोजित करें: रेगुलर एक्सप्रेशन (Regex) फॉर्मेट की पुष्टि करता है; यह पुष्टि नहीं कर सकता कि पता मौजूद है। साइनअप प्रक्रियाओं और सूची आयात के लिए, फॉर्मेट सत्यापन को पुष्टिकरण ईमेल या रीयल-टाइम सत्यापन के साथ जोड़ें। ई - मेल सत्यापन जाँच करें। यह डिस्पोजेबल पते, डोमेन में टाइपिंग की गलतियाँ और सही ढंग से स्वरूपित लेकिन अस्तित्व में न होने वाले पते पकड़ लेता है।
  • उपयोगकर्ता अनुभव को प्राथमिकता दें: उदाहरण के लिए, यदि आपका रेगुलर एक्सप्रेशन किसी वैध पते को अस्वीकार कर देता है, जैसे कि प्लस चिह्न वाला पता या नया टीएलडी, तो आप अनजाने में एक वास्तविक ग्राहक खो देते हैं। बेहतर यही है कि फॉर्मेटिंग चरण में थोड़ी व्यापक इनपुट की अनुमति दी जाए और बाद में अनुपयोगी पतों को फ़िल्टर करने के लिए जाँच पर भरोसा किया जाए।

ईमेल रेगुलर एक्सप्रेशन की सामान्य गलतियाँ और सीमाएँ

ईमेल रेगुलर एक्सप्रेशन (regex) क्या नहीं कर सकता, इसे समझना उतना ही महत्वपूर्ण है जितना कि इसे लिखना जानना।

  • रेगुलर एक्सप्रेशन (Regex) फॉर्मेट को वैलिडेट करता है, अस्तित्व को नहीं: एक स्ट्रिंग की तरह [ईमेल संरक्षित] यह ईमेल रेगुलर एक्सप्रेशन (regex) पैटर्न को अच्छी तरह से समझ लेगा, लेकिन इसका मतलब यह नहीं है कि ईमेल पता वास्तविक, सक्रिय या ईमेल डिलीवर करने योग्य है। रेगुलर एक्सप्रेशन को DNS, मेल सर्वर या मेलबॉक्स के अस्तित्व की जानकारी नहीं होती। फॉर्मेट की जांच और ईमेल डिलीवर करने की क्षमता की जांच दो अलग-अलग चीजें हैं।
  • गलत नकारात्मक परिणाम, वैध पतों को अस्वीकार करना: कुछ वैध पते अत्यधिक सख्त पैटर्न में विफल हो जाते हैं। स्थानीय भाग में + वाले पते ([ईमेल संरक्षित]फ़िल्टरिंग के लिए .tld डोमेन का उपयोग आम है और ये पूरी तरह से मान्य हैं। .museum, .io, या .agency जैसे नए TLD भी अस्वीकार किए जा सकते हैं यदि आपके पैटर्न में दो-अक्षर की TLD सीमा लागू होती है। प्रत्येक गलत अस्वीकृति एक वास्तविक व्यक्ति को दर्शाती है जो साइन अप नहीं कर सका।
  • गलत सकारात्मक परिणाम, अमान्य स्ट्रिंग स्वीकार करना: सरल पैटर्न ऐसी स्ट्रिंग्स को पास कर सकते हैं जो देखने में सही लगती हैं लेकिन वास्तव में सही नहीं होतीं। उदाहरण के लिए, user@example कई बुनियादी जाँचों को पास कर लेता है लेकिन इसमें कोई मान्य TLD नहीं है। एक ऐसा पैटर्न जो न्यूनतम TLD लंबाई को अनिवार्य नहीं करता, वह इसे स्वीकार कर लेगा और एक गैर-वितरित करने योग्य पते को संग्रहीत कर लेगा।
ईमेल पता रेगुलर एक्सप्रेशन
  • अत्यधिक जटिल पैटर्न विफल हो जाते हैं: RFC 5322 ईमेल विनिर्देश को पूरी तरह से लागू करने की कोशिश करने वाले पैटर्न सैकड़ों वर्णों तक लंबे हो सकते हैं और फिर भी कुछ विशेष परिस्थितियों में विफल हो सकते हैं। इनका परीक्षण करना कठिन है, इनमें मौजूद त्रुटियों को दूर करना मुश्किल है, और अक्सर पुरानी समस्याओं को हल करने के प्रयास में नई समस्याएं उत्पन्न हो जाती हैं। ईमेल विनिर्देश स्वयं इतना जटिल है कि कोई भी एक रेगुलर एक्सप्रेशन इसे पूरी तरह से कवर नहीं कर सकता।
  • रेगुलर एक्सप्रेशन पहला फ़िल्टर है, संपूर्ण समाधान नहीं: यह फॉर्मेटिंग की गलतियों को जल्दी और कम खर्च में पकड़ लेता है। डोमेन की वैधता, MX रिकॉर्ड, मेलबॉक्स की मौजूदगी और डिस्पोजेबल एड्रेस की पहचान सहित फॉर्मेट के अलावा बाकी सभी चीजों के लिए, आपको एक सत्यापन परत की आवश्यकता होती है। इस तरह की जाँचें MX रिकॉर्ड लुकअप और पूर्ण ईमेल सत्यापन रेगुलर एक्सप्रेशन से आगे बढ़कर यह पुष्टि करता है कि कोई पता वास्तव में संदेश प्राप्त कर सकता है या नहीं, न कि केवल यह कि वह सही दिखता है या नहीं।

नीचे पंक्ति

ईमेल रेगुलर एक्सप्रेशन (regex) आपको सिस्टम में डेटा आने से पहले ही फॉर्मेटिंग की गलतियों को पकड़ने का एक तेज़ और आसान तरीका देता है। ईमेल इनपुट स्वीकार करने वाले हर फॉर्म और API एंडपॉइंट पर इसे लागू करना फायदेमंद है। लेकिन यह वैलिडेशन वर्कफ़्लो का पहला चरण है, अंतिम नहीं।

सही फॉर्मेट वाला पता भी निष्क्रिय, डिस्पोजेबल, किसी सामान्य डोमेन से जुड़ा हुआ या अस्तित्वहीन हो सकता है। ऐसे पते हर बार रेगुलर एक्सप्रेशन (regex) से गुजरते हैं। एक बार जब वे आपके डेटाबेस में आ जाते हैं, तो वे आपकी बाउंस रेट को बढ़ाते हैं और आपके व्यवसाय को प्रभावित करते हैं। ईमेल सुरक्षा इससे आपकी संपर्क जानकारी की समग्र विश्वसनीयता कम हो जाती है।

अपनी सूची को DeBounce पर अपलोड करें और फॉर्मेट जांच से आगे बढ़ें। DeBounce RFC मानकों के अनुसार सिंटैक्स को सत्यापित करता है, DNS और MX रिकॉर्ड की जांच करता है, मेलबॉक्स की मौजूदगी की जांच करता है, और डिस्पोजेबल और जोखिम भरे एड्रेस प्रकारों को चिह्नित करता है, उन चीजों को पकड़ता है जिन्हें रेगुलर एक्सप्रेशन नहीं पकड़ पाता। अपने अगले ईमेल भेजने से पहले अपनी सूची में मौजूद सभी जानकारी देखने के लिए 100 निःशुल्क सत्यापन से शुरुआत करें।

अक्सर पूछे जाने वाले प्रश्न

इस विषय से संबंधित सामान्य प्रश्नों के उत्तर।
01

क्या किसी ईमेल पते में एक से अधिक @ चिह्न हो सकते हैं?

नहीं। ईमेल विनिर्देश के अनुसार, डोमेन से स्थानीय भाग को अलग करने के लिए कम से कम एक @ चिह्न आवश्यक है। शून्य या एक से अधिक @ वाले किसी भी स्ट्रिंग को मान्य ईमेल पता नहीं माना जाएगा और यह रेगुलर एक्सप्रेशन और सर्वर-स्तरीय दोनों जाँचों में विफल हो जाएगा।

02

एक वैध ईमेल पते की अधिकतम लंबाई कितनी हो सकती है?

RFC 5321 के अनुसार, स्थानीय भाग (@ से पहले) 64 वर्णों तक सीमित है, डोमेन 255 वर्णों तक और कुल पता 254 वर्णों तक सीमित है। अधिकांश वास्तविक पते इन सीमाओं के भीतर ही होते हैं, लेकिन भंडारण संबंधी समस्याओं से बचने के लिए सत्यापन प्रक्रिया में इन्हें लागू करना उचित है।

03

क्या रेगुलर एक्सप्रेशन (regex) अंतरराष्ट्रीय वर्णों (यूनिकोड) वाले ईमेल को मान्य कर सकता है?

ASCII वर्ण सेट के लिए लिखे गए मानक रेगुलर एक्सप्रेशन पैटर्न अंतरराष्ट्रीय ईमेल पतों को सही ढंग से हैंडल नहीं कर पाते हैं, जिनमें स्थानीय भाग में गैर-लैटिन वर्ण शामिल हो सकते हैं। अंतरराष्ट्रीय पतों को मान्य करने के लिए या तो यूनिकोड वर्ण वर्गों का उपयोग करने वाले विस्तारित रेगुलर एक्सप्रेशन या एक समर्पित पार्सिंग लाइब्रेरी की आवश्यकता होती है। अधिकांश मामलों में, मानक ASCII सत्यापन आपके सामने आने वाले अधिकांश पतों को कवर करता है, और इसे ईमेल सुरक्षा कंपनियों के सत्यापन टूल के साथ उपयोग करने से शेष पते भी कवर हो जाते हैं।