2009-12-09 14 views
8

मुझे पता है कि यहां ईमेल सत्यापन और विशिष्ट RegEx के बारे में बहुत सारे प्रश्न हैं। मैं जानना चाहता हूं कि [email protected] चाल (details here) होने के संबंध में ईमेल मान्य करने के लिए सर्वोत्तम प्रथाएं क्या हैं। जावास्क्रिप्ट सत्यापन के लिए मेरे वर्तमान RegExp इस प्रकार है, लेकिन यह हैंडल में अतिरिक्त + का समर्थन नहीं करता:ईमेल पता सत्यापन (+ जीमेल पते में + सहित) के लिए सर्वोत्तम अभ्यास

/^([a-zA-Z0-9_.-])[email protected](([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/ 

क्या कोई अन्य सेवाओं है कि अतिरिक्त + का समर्थन कर रहे हैं? क्या मुझे पते में + की अनुमति देनी चाहिए या क्या मुझे RegEx को केवल gmail.com या googlemail.com डोमेन के साथ ईमेल के लिए अनुमति देना चाहिए? यदि हां, तो बदले गए RegEx क्या होगा?

अद्यतन: उनका कहना है कि + कल्पना प्रति वैध है के लिए हर किसी के लिए धन्यवाद। मैं उसे नहीं जानता था और अब भविष्य के लिए करता हूं। आप में से उन लोगों के लिए यह कहना है कि इसे वैध करने के लिए एक RegEx का उपयोग करना भी बुरा है, मेरा कारण पूरी तरह से एक रचनात्मक डिजाइन पर आधारित है जिसे मैं बना रहा हूं। हमारे क्लाइंट के डिज़ाइन में हरे रंग की चेक या लाल एक्स को इसके पते पर ईमेल पता इनपुट के बगल में रखा गया है। वह आइकन इंगित करता है कि यह एक वैध ईमेल पता है या नहीं, इसलिए मुझे इसे सत्यापित करने के लिए कुछ जेएस का उपयोग करना होगा।

+2

यह शायद ही एक चाल है, जब यह ईमेल मानक का हिस्सा है के बारे में एक बहुत अच्छा लेख। – tloach

+8

स्पष्ट गलत टाइपिंग के अलावा, ई-मेल सत्यापन के लिए RegEx का उपयोग न करें। बस उपयोगकर्ता को 'सक्रियण' लिंक के साथ एक ई-मेल संदेश भेजें। ई-मेल सत्यापन के लिए कोई मूर्खतापूर्ण regexes नहीं हैं। कम से कम कोई भी जो ए 4 पेपर की शीट फिट नहीं करता है, यहां तक ​​कि जब एक छोटे, अभी तक पठनीय, फ़ॉन्ट में मुद्रित किया जाता है ;-) (http://www.regular-expressions.info/email.html) – Duroth

+0

@tloach मैं इसे एक चाल मानता हूं यदि सभी ईमेल सेवाएं इस तरह से समर्थन नहीं करती हैं कि '+' के बाद भाग के बावजूद '+ 'से पहले संभाल के पहले हिस्से को ईमेल भेजें - मुझे यह भी पता नहीं था कि यह मानक का हिस्सा था। –

उत्तर

11

+ एक ईमेल पते में valid character है। इससे कोई फर्क नहीं पड़ता कि डोमेन gmail.com नहीं है या googlemail.com

रीगेक्स वास्तव में ईमेल मान्य करने का एक बहुत अच्छा तरीका नहीं है, लेकिन यदि आप प्लस को बदलने के लिए अपने रेगेक्स को संशोधित करना चाहते हैं, तो बदलें निम्नलिखित करने के लिए इसे:

/^([a-zA-Z0-9_.-\+])[email protected](([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/ 

कैसे इस regex कल्पना के खिलाफ मान्य नहीं करता का एक उदाहरण के रूप में: ईमेल [email protected] यह के अनुसार मान्य है।

+0

मैं उत्सुक होगा कि ईमेल पता सत्यापन को संभालने के लिए सबसे अच्छा क्या है। – Zoidberg

+0

मुझे लगता है कि उनका मतलब है कि अपने स्वयं के रेगेक्स को घुमाने के बजाय सिद्ध, परीक्षण लाइब्रेरी का उपयोग करना बेहतर है। ऐसी लाइब्रेरी का जावा उदाहरण अपाचे कॉमन्स है। –

+1

देखें http://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validation –

5

यदि आपको regexp के माध्यम से ईमेल मान्य करने की आवश्यकता है, तो read the standard या कम से कम this article

मानक इस regexp का उपयोग करने का सुझाव देते हैं:

(?:[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])+)\]) 

है कि आप को डराने नहीं है, तो यह :) चाहिए

+1

इस आलेख से आप लिंक करते हैं: "अंधेरे से ऑनलाइन पुस्तकालयों या चर्चा मंचों से नियमित अभिव्यक्तियों की प्रतिलिपि न लें।" साथ ही, यह regex _still_ spec को पूरी तरह से मान्य नहीं करता है। –

+0

@Aaron धन्यवाद, यह बहुत डरावना है। मैं नाटक करने जा रहा हूं मैंने पहले कभी नहीं देखा है - खासकर एन्कोडेड पात्र! –

3

मैं की तर्ज पर कुछ के साथ जाने के लिए करते हैं जाएगा /[email protected] + \ .. +/सरल गलतियों की जांच करने के लिए। फिर मैं यह सत्यापित करने के लिए पते पर एक ईमेल भेजूंगा कि यह वास्तव में मौजूद है, क्योंकि अधिकांश टाइपो अभी भी सिंटैक्टिक रूप से वैध ईमेल पते में परिणाम देंगे।

2

चश्मे कुछ वास्तव में पागल बदसूरत ईमेल पते की अनुमति देते हैं। मैं अक्सर वेबसाइटों से बहुत नाराज हूं, यहां तक ​​कि सामान्य, वैध ईमेल पते के बारे में भी शिकायत करते हैं, इसलिए कृपया वैध ईमेल पते को अस्वीकार न करने का प्रयास करें। कानूनी लोगों को अस्वीकार करने से कुछ अवैध पते को स्वीकार करना बेहतर है।

दूसरों की तरह सुझाव दिया गया है, मैं एक साधारण regexp जैसे /[email protected]+/ और फिर एक सत्यापन ईमेल भेजकर जाऊंगा। यदि यह सत्यापित करने के लिए पर्याप्त महत्वपूर्ण है, तो यह सत्यापित करना महत्वपूर्ण है, क्योंकि एक कानूनी ईमेल पता अभी भी आपके आगंतुक के अलावा किसी अन्य व्यक्ति से संबंधित हो सकता है। या एक अनपेक्षित लेकिन घातक टाइपो शामिल हैं।

* संपादित करें: रेगेक्स के डोमेन भाग से डॉट हटा दिया गया है, क्योंकि [email protected] अभी भी एक मान्य ईमेल पता है। तो यहां तक ​​कि मेरे सुपर सरलीकृत सत्यापन ने वैध पते को खारिज कर दिया।क्या किसी भी चीज को स्वीकार करने के लिए कोई नकारात्मकता है जिसमें @ कुछ है और इसके पीछे कुछ है?

+2

कोई कारण नहीं है कि टोंगा सरकार 'सीसीटीएलडी' में 'एमएक्स' प्रविष्टि नहीं जोड़ सकती है, जिससे एक वास्तविक, कामकाजी ई-मेल पता 'एमसीवी @ से' जैसे पते का पता चलता है। उनके पास पहले से ही एक http सर्वर है जो http: // to' (एक यूआरआई शॉर्टनर सेवा के लिए) पर चल रहा है, इसलिए यह निश्चित रूप से अवास्तविक नहीं है। –

संबंधित मुद्दे