2013-01-21 11 views
24

Sto avendo il testo di seguito:estratto tutti gli indirizzi email da testo di massa utilizzando jQuery

[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]> 

Qui email sono seprated da , o ;. Voglio estrarre tutte le email presenti sopra e memorizzarle nell'array. C'è un modo semplice usando regex per ottenere tutte le e-mail direttamente?

+0

um, dato il tuo campione "Qui le email sono seprated da' ' 'o'; '" Sembra che ci sia un'istruzione non valida. forse intendevi ',' e/o ';'? –

+0

@MarkSchultheiss: vedi gmail a, cc e bcc list.its perfettamente validi per la sepa- razione delle e-mail laggiù tramite virgola o punto e virgola. –

+0

Sì, ma tu dici una singola citazione/apostophe che non corrisponde ai tuoi dati di esempio. –

risposta

62

Ecco come è possibile avvicinarsi a questo:

HTML

<p id="emails"></p> 

JavaScript

var text = '[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>';  

function extractEmails (text) 
{ 
    return text.match(/([a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); 
} 

$("#emails").text(extractEmails(text).join('\n')); 

Risultato

[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] 

Fonte: Extract email from bulk text (with Regular Expressions, JavaScript & jQuery)

Demo 1 Here

Demo 2 Here sull'uso di ciascuna funzione iteratore di jQuery

+0

@thanks leniel .... non vedevo l'ora di jquery iterator per tutte le email.e demo 2 funziona gr8 fr me –

+0

Davvero bello sapere che è stato utile! :) –

+0

Non dovrebbe leggere 'extractEmails ($ (" # email "). Text()). Join ('\ n');' o mi manca qualcosa? – notacouch

7

È possibile utilizzare questa espressione regolare:

var re = /(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g; 

È possibile estrarre le e-mail come questa:

('[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>').match(re); 

//["[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"] 
2
function GetEmailsFromString(input) { 
    var ret = []; 
    var email = /\"([^\"]+)\"\s+\<([^\>]+)\>/g 

    var match; 
    while (match = email.exec(input)) 
    ret.push({'name':match[1], 'email':match[2]}) 

    return ret; 
} 

var str = '"Name one" <[email protected]>, ..., "And so on" <[email protected]>' 
var emails = GetEmailsFromString(str) 

Source

+0

thnks johan ... funziona benissimo –

4

Solo un aggiornamento per la risposta accettata. Questo non funziona per i segni "più" nell'indirizzo email. GMAIL supporta [email protected]

Ho aggiornato a:

return text.match(/([a-zA-Z0-9._+-][email protected][a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); 
Problemi correlati