2017-10-16 4 views
2

Je travaille sur la validation de plusieurs emails depuis un champ de saisie et je n'arrive pas vraiment à faire fonctionner mon Regex. J'ai un champ d'entrée qui a des e-mails séparés par une virgule , point-virgule, l'espace et parfois pas d'espace, quelque chose comme ceci:Comment valider plusieurs emails à la fois en Javascript?

user1 @ email.comuser2 @ gmail.com, [email protected] ; [email protected] [email protected]

J'essaie d'obtenir tous les e-mails en utilisant Regex puis valider chacun d'eux, mais pas vraiment sûr de savoir comment faire en utilisant Regex en Javascript.

J'ai écrit mon code en Java et il fonctionne très bien à obtenir tous les e-mails:

code Java:

String employeeEmails = "[email protected] , [email protected] [email protected];[email protected]"; 

Matcher eachEmail = Pattern.compile("\\[email protected]\\w+.com").matcher(employeeEmails); 
List<String> emailList = new ArrayList<String>(); 

while (eachEmail.find()){ 
    emailList.add(eachEmail.group()); 
} 

Enfin Emaillist a tous les e-mails

Maintenant, je J'essaie d'obtenir tous les e-mails en Javascript et de valider chacun d'entre eux et si l'un d'entre eux n'est pas un e-mail valide jeter une erreur. Voici mon code:

Javascript:

var regex1 = /\[email protected]\w+.com/; // This will get all emails from inputField 
    var emailList = regex1; 
    var regex2 = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; // This will validate each email 

    for(var i = 0;i < emailList.length;i++) { 
     if(!regex2.test(emailList[i])) { 
      return me.invalidText; // throw error if an email is not valid 
     } 
    } 

avez besoin pour ce faire en Javascript. Quelqu'un peut-il me dire ce que je manque s'il vous plaît? Merci d'avance!

Répondre

0

J'espère que cela vous aide:

employeeEmails = "[email protected] , [email protected] [email protected];[email protected]*[email protected]"; 

function extractEmails(x) { return x.match(/([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/g); } 

var emails=extractEmails(employeeEmails); 

    // The emails already in an array, now a more exhaustive checking: 

function validateEmail(v) { var regex = /^(([^<>()\[\]\\.,;:\[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,}))$/; 
    return regex.test(v); 
} 

emails.forEach(function(email, index) 
{ 
    // Here you can handle each employee emails. 
    // 
    // Example: 
    var verified=validateEmail(email); 
    document.write(' validation is '+ verified +' for '+ email +'<br>');  
}); 

Sources: