Regex खाली स्ट्रिंग या ईमेल


128

मुझे एसओ में बहुत सारे रेगेक्स ईमेल सत्यापन मिले लेकिन मुझे ऐसा कोई नहीं मिला जो एक खाली स्ट्रिंग को स्वीकार करेगा। क्या यह केवल रेगेक्स के माध्यम से संभव है? खाली स्ट्रिंग या ईमेल केवल स्वीकार करना? मैं यह केवल Regex पर करना चाहता हूं।

जवाबों:


313

यह regex पैटर्न एक रिक्त स्ट्रिंग से मेल खाएगा:

^$

और यह एक ईमेल या एक खाली स्ट्रिंग से मेल खाएगा।

(^$|^.*@.*\..*$)

1
कुछ पर विचार करने के लिए, ^ (| *। * @। * \ * *) $ का एक ही प्रभाव होना चाहिए क्योंकि यह या तो रिक्त या केवल उपयोग के साथ ^ और $ एक बार कहता है, इसे थोड़ा ठीक करने के लिए।
रुन्वाॉल्ट

1
यह बहुत पुराना है, लेकिन मैं बस इस पर ठोकर खाई और जवाब से परेशान था। ऐसे मामले हैं जहां एक स्ट्रिंग की शुरुआत छिपी हुई है लेकिन अभी भी मेल खाती है ^, जहां प्रभावी रूप से आप एक ईमेल की तलाश कर रहे हैं या स्ट्रिंग के बीच में कुछ भी नहीं है। इसके लिए (email_regex)?बेहतर-अनुकूल है।
jclancy

यह करने के लिए RegEx का उपयोग करने की कोशिश करने से पहले ईमेल पर सत्यापन कितना जटिल है, यह सुनिश्चित करें। stackoverflow.com/questions/201323/…
bryan kennedy

यह निम्नलिखित ईमेल test.test@test से मेल खाएगा। यह बेहतर है कि मुझे लगता है कि मुझे लगता है कि ^ $ | ^ [^ \ s @] + @ [^ \ s @] + \ _ [^ \ s @] + $ जैसा कि यह test@test.se जैसे ईमेल को स्वीकार करेगा
NOT_trust_me

एक विशेष जावा अनुप्रयोग में, ^$काम नहीं करता है, लेकिन ^(?!.)यह करता है: [ ^स्ट्रिंग की शुरुआत, (?!)नकारात्मक लुकहेड, .किसी भी चरित्र
लाइनफीड

8

खाली स्ट्रिंग या ईमेल का मिलान

(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)

खाली स्ट्रिंग या ईमेल का मिलान करना लेकिन व्हॉट्सएप की किसी भी राशि का मिलान करना

(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)

ईमेल मिलान रेगेक्स के बारे में और देखें:

http://www.regular-expressions.info/email.html


2

काम के ऊपर के उत्तर (खाली के लिए $), लेकिन मैंने अभी-अभी यह कोशिश की है और यह भी सिर्फ इसलिए खाली छोड़ने के लिए काम करता है:

/\A(INTENSE_EMAIL_REGEX|)\z/i

उलटे क्रम में एक ही बात

/\A(|INTENSE_EMAIL_REGEX)\z/i

0

Regex के साथ किसी ईमेल का मिलान न करें। यह बहुत बदसूरत और लंबा और जटिल है और आपका रेगेक्स पार्सर शायद इसे वैसे भी संभाल नहीं सकता है। उनके मिलान के लिए एक लाइब्रेरी रूटीन खोजने की कोशिश करें। यदि आप केवल एक ईमेल पते से मेल खाते की व्यावहारिक समस्या को हल करना चाहते हैं (यदि आप गलत कोड चाहते हैं जो (आमतौर पर) काम करता है), तो किसी अन्य द्वारा सबमिट किए गए नियमित-expressions.info लिंक का उपयोग करें।

रिक्त स्ट्रिंग के लिए, ^$कई लोगों द्वारा उल्लेख किया गया है और ठीक काम करेगा।


13
बदसूरत regex वास्तव में regex पार्सर्स द्वारा नियंत्रित किया जा सकता है। रेक्स का उपयोग सिर्फ इसलिए नहीं कि यह बदसूरत है।
पीटर

यह रचनात्मक नहीं है। RegEx की कोशिश की जाती है और परीक्षण किया जाता है (और बदसूरत से दूर - क्या आप कहेंगे कि यह बहुत सुंदर है कि यह कैसे काम करता है?)। किसी संभावित समाधान पर बिना किसी मार्गदर्शन के एक पुस्तकालय का सुझाव देने के लिए सभी को जवाब देने के उद्देश्य को पराजित करता है। सभी को बुकमार्क करने की आवश्यकता है: code.tutsplus.com/tutorials/…
pimbrouwers

Regexes को पढ़ने, बनाए रखने और डिबग करने के लिए कुख्यात हैं, जो उन्हें लाइब्रेरी के लिए कॉल द्वारा प्रतिस्थापन के लिए एक प्रमुख उम्मीदवार बनाता है।
17

2
रिकॉर्ड के लिए: मैं ख़ुशी से एक विशिष्ट पुस्तकालय की सिफारिश करूँगा अगर मुझे पता था कि ओपी किस भाषा का उपयोग कर रहा है। चूंकि यह एक भाषा-अज्ञेय प्रश्न है, इसलिए मेरे विकल्प सीमित हैं।
केविन

2
Regex सुंदर नहीं माना जाता है। उस तर्क से, किसी को कभी भी रेगेक्स का उपयोग नहीं करना चाहिए। यदि आप किसी लाइब्रेरी के बारे में इसकी जगह लेने के बारे में बहुत अडिग हैं, तो आपको क्या लगता है कि लाइब्रेरी क्या करने जा रही है? यह या तो बहुत लंबा, जटिल कोड है, या यह regex का उपयोग करने जा रहा है ... इस बिंदु तक आप बस अपने स्वयं के "पुस्तकालय" को लागू कर सकते हैं। और आजकल, अगर किसी को पता नहीं है कि रेगेक्स का उपयोग कैसे किया जाता है, तो उन्हें शायद ईमेल पते को किसी भी तरह से सत्यापित करने का काम नहीं करना चाहिए ...
एंड्रयू

0

यह हल करेगा, यह खाली स्ट्रिंग या सटीक ईमेल आईडी स्वीकार करेगा

"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"

2
क्या आप थोड़ा अधिक वर्णनात्मक हो सकते हैं।
विनय प्रजापति

0

मैं /^\s+$|^$/giखाली और खाली जगहों का मिलान करना पसंद करता हूं ।

console.log("  ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));


3
यदि आप ^ \ _ का उपयोग करते हैं, तो $ आपको या मामले की आवश्यकता नहीं है। इसके अलावा जी या आई मॉडिफायर की कोई आवश्यकता नहीं है क्योंकि यह पूरी लाइन से मेल खाता है और इसमें कोई भी अक्षर शामिल नहीं है।
काडू

0

यदि आप इसे रेल के भीतर उपयोग कर रहे हैं - एक्टिवरकॉर्ड सत्यापन जिसे आप सेट कर सकते हैं allow_blank: true

जैसा:

validates :email, allow_blank: true, format: { with: EMAIL_REGEX }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.