मॉड्यूल पाठ (1/4)
किसी ईमेल को मान्य करना
किसी ईमेल को "सही ढंग से" मान्य करना जितना लगता है उससे कहीं अधिक कठिन समस्या है: आरएफसी 5322 एक राक्षस है. व्यवहार में हम एक काफी अच्छा पैटर्न चुनते हैं सामान्य मामलों को स्वीकार करता है और स्पष्ट रूप से गलत मामलों को खारिज कर देता है।
Pattern: ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$[\w.+-]+-- स्थानीय भाग: अक्षर, अंक,_,.,+,-।@-- विभाजक।[\w-]+(?:\.[\w-]+)+-- डोमेन + कम से कम एक TLD.द्वारा अलग किया गया।
यह क्या स्वीकार करता है: mario.rossi@example.com, foo+bar@sub.example.co.uk,
user_123@test-domain.io.
यह क्या अस्वीकार करता है: mario@, @example.com, mario@example (कोई TLD नहीं), रिक्त स्थान।
व्यापार नापसंद
उपरोक्त पैटर्न नहीं स्वीकार करता है:
- उद्धृत स्ट्रिंग्स
"strange (things)"@example.com(आरएफसी उन्हें अनुमति देता है)। - यूनिकोड वर्ण वाले डोमेन (
\u00fcber@m\u00fcnchen.de)। - बहुत लंबे टीएलडी जो
\wको पार नहीं करते (उदाहरण के लिए अंतर्राष्ट्रीयकृत)।
यदि आपको उनकी आवश्यकता है, तो u ध्वज के साथ कक्षा को \p{L} तक विस्तृत करें, या किसी को सौंपें
विशेष पुस्तकालय.
ईमेल सत्यापन के लिए ट्रेड-ऑफ़ और सर्वोत्तम अभ्यास
कोई भी रेगेक्स यह गारंटी नहीं दे सकता कि ईमेल पता वास्तव में मौजूद है। अत्यधिक जटिल पैटर्न प्रदर्शन को ख़राब करते हैं और असामान्य लेकिन मान्य डोमेन को बाहर कर देते हैं। स्पष्ट टाइपो को अस्वीकार करने और सत्यापन कोड भेजने के लिए एक सरल सत्यापन पैटर्न का उपयोग करना बेहतर है।
इसे अजमाएं
पाठ में प्रत्येक ईमेल को पहचानें. एक सरल पैटर्न का उपयोग करें: @ से पहले अक्षर/अंक/बिंदु, कम से कम एक बिंदु वाला डोमेन।
संकेत दिखाएँ
एकाधिक टीएलडी स्वीकार करने के लिए स्थानीय भाग को [\\w.+-]+ और डोमेन को [\\w-]+\\.[\\w.-]+ तक चौड़ा करें।
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
प्रत्येक ईमेल के डोमेन (@ के बाद का भाग) को नामित समूह `डोमिनियो` के रूप में कैप्चर करें।
संकेत दिखाएँ
डोमेन भाग को नामित समूह में लपेटें: (?<dominio>[\\w.-]+).
3 प्रयासों के बाद समाधान उपलब्ध है
अतिरिक्त चुनौती
Find the domain part of an email (everything after `@`), excluding the `@` sign using lookbehind.
संकेत दिखाएँ
डोमेन वर्ण वर्ग के सामने सकारात्मक लुकबैक (?<=@) का उपयोग करें।
3 प्रयासों के बाद समाधान उपलब्ध है