2013-08-22 14 views
22

जावास्क्रिप्ट के साथ, हम एक स्ट्रिंग से @ gmail.com या @ aol.com को कैसे हटा सकते हैं ताकि नाम केवल शेष ही रहे?ईमेल पते से नाम पुनर्प्राप्त कैसे करें

var string = "[email protected]"; 

सिर्फ "जॉडो" होगा? मैंने विभाजन के साथ कोशिश की लेकिन यह अच्छी तरह खत्म नहीं हुआ। धन्यवाद।

+4

क्या था स्ट्रिंग रिटर्न regex here

var string = '[email protected]'; var name= string.replace(/@.*/, ""); console.log(name); 

उपयोग के बारे में और अधिक पढ़ सकते समस्या आप 'विभाजन के साथ था ('@')'? – icedwater

+2

@split ('@') के साथ समस्याग्रस्त पानी की समस्या है कि '@ @ को' im @ home @ example.com' में * नाम/पता * के हिस्से के रूप में अनुमति दी गई है - उस मामले में 'विभाजन' नहीं कर सकता गारंटी दें कि '[0]' वां परिणाम वास्तविक पूर्ण स्ट्रिंग नाम 'im @ home' है, बल्कि इसके परिणामस्वरूप केवल' im' होगा। –

उत्तर

46
var email = "[email protected]"; 
var name = email.substring(0, email.lastIndexOf("@")); 
var domain = email.substring(email.lastIndexOf("@") +1); 

console.log(name); // john.doe 
console.log(domain); // email.com 

ऊपर
"जॉन @@" @doe

जॉन \ वैध युक्त नाम @ (tools.ietf.org/html/rfc3696पेज 5) के लिए भी काम करेंगे। Doe
" जे @ एचएन "। डी \ @e

+0

हाँ, यह काम किया। मुझे नहीं पता था कि यह उतना आसान था जितना। धन्यवाद! – leeshin

+0

* सुनिश्चित करें कि आप 'स्ट्रिंग'' (पूंजी "एस" के साथ) का नाम नहीं है। Pedantic होने की कोशिश नहीं कर रहा है, लेकिन यह एक आरक्षित कीवर्ड है। – Gary

+0

मेरी टिप्पणी आपके उत्तर – Gary

4

substring() और indexOf()

var name = email.substring(0, email.indexOf("@")); 
+0

@ रोको धन्यवाद।मैं मोबाइल से हूं –

+2

वाई! +1 करने के लिए * इसे करने का दूसरा तरीका * मुझे '.plit()' की सादगी पसंद है, मैं भी अपने फोन से जवाब देने से नफरत करता हूं, खासकर जब 'संपादन' बटन (एक मिशन असंभव) हिट करने की बात आती है :) –

+0

फिर से धन्यवाद। मैं अपने कार्यालय के रास्ते पर हूं। –

10

का उपयोग कर यह प्रयास आप ध्यान दें एक मान्य ईमेल पता एक अविश्वसनीय रूप से परिष्कृत वस्तु है कि ले जाना चाहिए और कई @ संकेत (रेफरी हो सकती है। http://cr.yp.to/im/address.html)।

"पते का डोमेन हिस्सा अंतिम @ के बाद सब कुछ है।"

इस प्रकार, आप कुछ के बराबर करना चाहिए:

var email = "[email protected]"; 
var name = email.substring(0, email.lastIndexOf("@")); 

या यहाँ तक कि छोटे,

var name = email.replace(/@[^@]+$/, ''); 

तुम दोनों नाम और डोमेन/होस्टनाम चाहते हैं, तो इस काम करेंगे:

var email = "[email protected]"; 
var lasta = email.lastIndexOf('@'); 
var name, host; 
if (lasta != -1) { 
    name = email.substring(0, lasta); 
    host = email.substring(lasta+1); 
    /* automatically extends to end of string when 2nd arg omitted */ 
} else { 
    /* respond to invalid email in some way */ 
} 
+0

यदि ईमेल उद्धरण में शामिल किया गया है तो एक ईमेल पते में एक और '@' हो सकता है। http://tools.ietf.org/html/rfc3696 'इन उद्धृत रूपों की शायद ही कभी अनुशंसा की जाती है, और अभ्यास में असामान्य हैं' http://i.imgur.com/SfgsLuN.jpg –

+1

@ रोकोसी बुल्जन जीमेल का आपका स्क्रीनशॉट है अप्रासंगिक। यह आपके द्वारा उद्धृत किए जाने वाले कई वर्षों से पहले दस्तावेज़ों द्वारा परिभाषित व्यापक श्रेणी के भीतर अपने मेलबॉक्स पहचानकर्ता प्रारूप को परिभाषित और मान्य करने के लिए प्रत्येक होस्ट पर हमेशा रहा है। यहां तक ​​कि जिसे आप उद्धृत करते हैं, वही बात बताती है: "... उन्हें दिनचर्या फ़िल्टर करने में खारिज नहीं किया जाना चाहिए, लेकिन [एसआईसी] को गंतव्य होस्ट द्वारा मूल्यांकन के लिए ईमेल सिस्टम में पास किया जाना चाहिए।" इसके अलावा, आपने उद्धरण पूरा नहीं किया: "** अभ्यास में शायद ही कभी प्रयोग किया जाता है, लेकिन कुछ वैध उद्देश्यों के लिए आवश्यक है **।" –

+0

@ रोकोसी। बुल्जन रे मेरी पिछली टिप्पणी। आपके द्वारा उद्धृत अनुच्छेद एक उद्धरण से थोड़ा अलग है जिसे मैंने उद्धृत किया था, लेकिन यहां तक ​​कि जिसे आपने उद्धृत किया है, यह भी कहने के लिए चला जाता है: "और अभ्यास में असामान्य हैं, लेकिन जैसा ऊपर बताया गया है, ** उन प्रक्रियाओं द्वारा समर्थित होना चाहिए जो प्रसंस्करण कर रहे हैं ईमेल पता**।" –

3

औरका उपयोग करने वाला दूसरा विकल्प:

var email = "[email protected]"; 
var sp = email.split('@'); 

console.log(sp[0]); // john.doe 
console.log(sp[1]); // email.com 
1

आप प्रतिस्थापन() और नियमित अभिव्यक्ति के साथ प्रयास कर सकते हैं। आप की जगह() यह पहले @

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