2017-10-16 98 views
2

我正在驗證從輸入字段中的多個電子郵件,並不能真正讓我的正則表達式工作。我有了一個逗號,分號,空格分隔的電子郵件,有時沒有空間,像這樣的輸入域:如何在Javascript中一次驗證多個電子郵件?

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

我試圖讓使用正則表達式的所有電子郵件,然後確認他們每個人,但真的不知道如何在Javascript中使用正則表達式來做到這一點。

我寫我的代碼在Java和它在獲得所有電子郵件的偉大工程:

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()); 
} 

最後的emailList擁有所有的電子郵件

現在我試圖通過Javascript獲取所有電子郵件並驗證其中的每一封電子郵件,如果其中一封電子郵件不是有效的電子郵件,則會引發錯誤。這裏是我的代碼:

的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 
     } 
    } 

需要得到這個在Javascript中完成的。有誰能告訴我我錯過了什麼嗎?先謝謝你!

回答

0

我希望這可以幫助您:

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>');  
}); 

來源: