2015-06-11 14 views
6

Devo convalidare un campo di posta elettronica che può contenere più indirizzi e-mail separati da (;). Quello che segue è il codice che ho usatoConvalida e-mail in jQuery utilizzando RegExp

$("body").find(".reqEmail").filter(function(){ 
     var regex = new RegExp(/^[_A-Za-z0-9-]+[^(),:;<>\\[\\]@]*@[^(),:;<>\\[\\]@]*(\\.[A-Za-z]{2,})+$/);///^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     var email=$(this).val() 
     if(regex.test(email)==false){ 
       e.preventDefault(); 
       $(this).css("border","solid 1px red"); 
       $(this).parent().find("#ReceAppEmail").html("Invalid Email!!"); 
       } 
       else{return true;} 
    }); 

Invia sempre il messaggio di errore, anche io inserisco 1 indirizzo email. Non riesco a trovare dove ho sbagliato. eventuali suggerimenti?
FYI: Questo è incluso nella presentazione del modulo (onsubmit)

+0

http://stackoverflow.com/questions/46155/validate-email-ad-ress-in-javascript –

+0

Puoi condividere il messaggio di errore con noi? – Stef

+0

Hai bisogno di 'var result = value.split (", ")' li dividi –

risposta

2

si può afferrare tutti gli indirizzi email separati da virgola utilizzando l'espressione regolare di seguito:

/(?:((?:[\w-]+(?:\.[\w-]+)*)@(?:(?:[\w-]+\.)*\w[\w-]{0,66})\.(?:[a-z]{2,6}(?:\.[a-z]{2})?));*)/g 

http://regexr.com/3b6al

+0

fantastico ma penso che OP non voglia ricevere e-mail valide, OP desidera actiflicare validamente tutte le e-mail che sono separate da ',' –

+0

Sì, hai perfettamente ragione. Ho risposto prima che aggiungesse il suo codice, quindi aveva senso al momento. – rsnorman15

+0

L'espressione regolare di cui sopra è leggermente diversa dalla semplice convalida di un indirizzo e-mail che in realtà convalida tutte le e-mail separate da un punto e virgola. I gruppi catturati dovrebbero essere le singole e-mail. – rsnorman15

1

È possibile farlo in base al codice riportato di seguito.

function validatecommSeptEmail(commSeptEmail) 
{ 
    var regex = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}$/; 
    return (regex.test(commSeptEmail)) ? true : false; 
} 

function validateMultiplecommSeptEmails(emailcntl, seperator) 
{ 
    var value = emailcntl.value; 
    if (value != '') { 
     var result = value.split(seperator); 
     for (var i = 0; i < result.length; i++) { 
      if (result[i] != '') { 
       if (!validatecommSeptEmail(result[i])) { 
        emailcntl.focus(); 
        alert('Please check, `' + result[i] + '` email addresses not valid!'); 
        return false; 
       } 
      } 
     } 
    } 
    return true; 
} 

Come si usa?

onblur="validateMultiplecommSeptEmails(this,',');" 
+0

Questa risposta funziona anche, ma non posso accettare due risposte. Ma la risposta di @ rsnorman15 è più vicina per il mio requisito – Kuru

+0

Beh, va bene se non puoi accettarlo, perché SO è per aiutare il programmatore in tutto il mondo, quindi non importa se lo accetti o no, ma ci importa di più potrebbe aiutarti. –

0

Prova questa

function validateEmail(email) { 
    var regixExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 
    $(".reqEmail").css("border","solid 1px red"); 
    $("#ReceAppEmail").html("Invalid Email!!"); 
    return regixExp.test(email); 
} 
Problemi correlati