2009-09-28 13 views
10

क्या कोई मुझे नियमित अभिव्यक्ति के साथ मदद कर सकता है जो @ प्रतीक के बाद, ईमेल पते के अंतिम भाग को वापस कर देगा? मैं regex के लिए नया हूँ, लेकिन सीखना चाहते हैं कि अक्षम करने के बजाय इसका उपयोग कैसे करें। नेट स्ट्रिंग फ़ंक्शंस!ईमेल पते से डोमेन के लिए नियमित अभिव्यक्ति

उदा। "[email protected]" के इनपुट के लिए मुझे "example.com" का आउटपुट चाहिए।

चीयर्स! टिम

उत्तर

16

के लिए रेगुलर एक्सप्रेशन इस उद्देश्य के लिए काफी भारी मशीनरी है। बस @ चरित्र पर ईमेल पते वाली स्ट्रिंग को विभाजित करें, और दूसरा आधा लें। (एक ईमेल पता केवल एक @ चरित्र को नियंत्रित करने की गारंटी है।)

+4

यह तकनीकी रूप से सच नहीं है क्योंकि आपके पास एकाधिक @ संकेत हो सकते हैं यदि केवल और अगर @ उद्धृत स्ट्रिंग में है तो साइन इन करें http://en.wikipedia.org/wiki/Email_address#Syntax ईमेल पते के सभी उद्देश्यों और उद्देश्यों के लिए सत्यापन, एक एकल @ संकेत स्प्लिटर है। –

14

@ (*।) $

यह @ से मेल खाना होगा, तो सब कुछ पर कब्जा इनपुट के अंत तक ($)

+3

धन्यवाद! मुझे "@ example.com" मिल रहा है। क्या मुझे बिना मूल्य के मूल्य मिल सकता है? – TimS

+1

आपको शायद सही समूह नहीं मिल रहा है। कोष्ठक '(', ') 'समूह समूह को इंगित करता है, इसलिए सुनिश्चित करें कि आप समूह से इंडेक्स 1 के साथ परिणाम प्राप्त करें, 0 नहीं (क्योंकि इंडेक्स # 0 हमेशा संपूर्ण अभिव्यक्ति मिलान के लिए आरक्षित है)। –

+0

यह सही जवाब है क्योंकि ओपी ने विशेष रूप से रेगेक्स के लिए कहा था ... जो संयोग से मैं यहां आने पर देख रहा था :) –

2

आपके इनपुट के लिए एक सरल regex है:

^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$ 

लेकिन, जब आप एक व्यापक और विषम डोमेन के लिए आवेदन करते हैं तो यह बेकार हो सकता है।

एक उदाहरण है:

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

लेकिन, जैसा कि आप की जरूरत आप अनुकूलन कर सकते हैं कि प्रत्यय डोमेन।

लेकिन अपने प्रत्यय की जरूरत के लिए, तुम बस जरूरत है:

@ + $

संसाधन:। http://www.regular-expressions.info/email.html

+0

वास्तव में [रेगेक्स थोड़ा लंबा है] (http: //cpansearch.perl। संगठन/src/RJBS/ईमेल-मान्य-0.182/lib/ईमेल/Valid.pm) – xxxxxxx

+0

मैं इस समाधान को अपने समाधान पर अनुशंसा करता हूं क्योंकि यह कम प्रतिबंधित है। –

+0

बस एक समूह में डोमेन को कैप्चर करना न भूलें, जैसा कि पूछा गया: '^ [ए-जेड 0-9 ._% + -] + @ ([ए-जेड 0-9 .-] + \। [एजेड] { 2,4}) $ ' –

3

यह एक सामान्य प्रयोजन ईमेल मिलानकर्ता है:

[a-zA-Z][\w\.-]*[a-zA-Z0-9]@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]) 

ध्यान दें कि यह केवल डोमेन समूह कब्जा; यदि आप निम्न का उपयोग करें, आगे बढ़ने @ भी भाग पर कब्जा कर सकते हैं:

([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]) 

मैं इस RFC 2822 को पूरा करता है यकीन नहीं है, लेकिन मैं इसे संदेह है। समारोह के

1
[email protected]; 
// now you want to fetch gmail from input user PHP's inbuilt function 
preg_match('/@(.*)/', $input, $output); 
echo $output[1]; // it'll print "gmail.com" 
  • प्रलेखन: preg_match()
+2

उस लिंक में पोस्ट किए गए प्रश्न के साथ * बिल्कुल कुछ नहीं * है। ** इस तरह की अपनी वेबसाइट से बस लिंक न करें **, या आप अपनी पोस्ट स्पैम के रूप में हटाए जाएंगे। मैं आपके लिए लिंक हटा रहा हूं। –

+0

मुझे पता है कि इसका सवाल करने के लिए कुछ भी नहीं है लेकिन लिंक में बहुत कठिन उदाहरण है, इसलिए सोचें कि यह दूसरों के लिए उपयोगी होगा ... ठीक है, अगली बार मैं इसे ख्याल रखूंगा। धन्यवाद :-) –

1

इस नियमित अभिव्यक्ति का प्रयास करें:

(?<=([\w-\.]@))((?:[\w]+\.)+)([a-zA-Z]{2,4}) 
+0

(? <= ([\ W - \।] @)) ((?: [\ W] + \।) +) ([A-zA-Z] {2,4}) –

2

वाह, यहाँ सभी उत्तर बिल्कुल ठीक नहीं कर रहे हैं।

:

एक ईमेल पता के रूप में कई "@" हो सकता है के रूप में आप चाहते हैं, और पिछले एक जरूरी डोमेन :(

उदाहरण के लिए

से पहले एक नहीं है, यह एक मान्य ईमेल पता है

[email protected](i'm a comment (with an @)) 

हालांकि आपको अपना ईमेल पता बनाने के लिए बहुत अच्छा होना होगा।

तो सबसे पहले, अंत में किसी भी टिप्पणी का विश्लेषण करें।

फिर

int atIndex = emailAddress.LastIndexOf("@"); 
String domainPart = emailAddress.Substring(atIndex + 1); 
0
(@)(\w+\-|\w+)+(\.) 

मैं कोई विशेषज्ञ हूँ, लेकिन इसके बाद के संस्करण अभिव्यक्ति क्या आप एक ई-मेल से डोमेन हड़पने के लिए, कम से कम जहाँ तक मैं बता सकता है की जरूरत है।

समस्या यह इंगित करती है कि आप न केवल डोमेन बल्कि "@" और "।" को पकड़ते हैं। regex में डोमेन नाम का उपयोग करने के लिए आप "$ 2" और "@" संरक्षित करने के लिए और उपयोग करते हैं, आप की तरह एक अभिव्यक्ति इस्तेमाल कर सकते हैं "।":

$1newdomain$3 

http://www.regexr.com/

ऊपर साइट एक अच्छी जगह है यह देखने के लिए regex कोशिश करने के लिए कैसे और कैसे काम करता है।

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