2011-12-03 12 views
5

मैं हमेशा एक सिरदर्द नियमित अभिव्यक्ति मिल जाए, और Googling वास्तव में मदद नहीं की। मैं वर्तमान में निम्नलिखित अभिव्यक्ति (preg_match) का उपयोग कर रहा: /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/Regex ईमेल - ईमेल में प्लस प्रतीकों को कैसे अनुमति दें?

हालांकि, अगर मैं प्लस प्रतीकों के साथ ईमेल, यह स्पष्ट रूप से काम नहीं करेगा की अनुमति देना चाहते हैं, उदाहरण के लिए: [email protected]

मुझे इसकी अनुमति देने के लिए अपनी अभिव्यक्ति को बदलने की आवश्यकता कैसे होगी? समस्त सहायता के लिए अग्रिम धन्यवाद!

+0

आपको ईमेल पते को सत्यापित करने के लिए रेगेक्स का उपयोग नहीं करना चाहिए (जो आप समझौता करने के इच्छुक हैं) देखें [यह प्रश्न] (http://stackoverflow.com/questions/201323/what-is-the-best-regular- अभिव्यक्ति के लिए मान्य-ईमेल-पते) –

उत्तर

8

तुम बस PHPs builtin regex ईमेल सत्यापन के लिए है, क्योंकि यह सब बातों को शामिल किया गया उपयोग करना चाहिए:

filter_var($email, FILTER_VALIDATE_EMAIL) 

filter_var और FILTER_VALIDATE_EMAIL देखें (या https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c#L499 वास्तविक जानवर के लिए)।

+0

यीप के लिए +1 रहा हूं है। यह एक अच्छा जवाब है। +1 – FailedDev

+0

और यदि आप सोच रहे थे, तो 'FILTER_VALIDATE_EMAIL' एक रेगेक्स का उपयोग करता है। आप इसे http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c?view=markup पर देख सकते हैं लाइन 525 –

+0

धन्यवाद - भयानक जवाब! हालांकि, यह अभी भी [email protected] को मान्य नहीं करता है - मेरे PHP को अपग्रेड करते हुए हम उम्मीद करते हैं कि यह नवीनतम स्थिर रिलीज में तय है! –

1

चार संग्रह [] में \+ जोड़ने का प्रयास करें:

/^[_a-z0-9-]+(.[_a-z0-9-\+]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$/ 
7

आपका wrong regex एक और wrong regex को बदला जा सकता है:

/^[\w-]+(\.[\w+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/ 

जो + चरित्र आप जहां चाहें, के लिए अनुमति देता है। लेकिन यह wrong वैसे भी।

+2

यह पहली बार मैं एक ** गलत ** जवाब :) – Bazzz

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