代码之家  ›  专栏  ›  技术社区  ›  Devmix

如何在Javascript中同时验证多封电子邮件?

  •  1
  • Devmix  · 技术社区  · 7 年前

    我正在验证一个输入字段中的多封电子邮件,但我的正则表达式无法正常工作。我有一个输入字段,其中电子邮件由 逗号、分号、空格,有时没有空格 ,如下所示:

    user1@email.comuser2@gmail。通用域名格式,user3@email.com;user4@gmail.com user5@email.com

    我尝试使用正则表达式获取所有电子邮件,然后验证每个电子邮件,但不确定如何在Javascript中使用正则表达式。

    我用Java编写了我的代码,它可以很好地获取所有电子邮件:

    String employeeEmails = "user1@email.com , user2@gmail.com user3@email.com;user4@gmail.com";
    
    Matcher eachEmail = Pattern.compile("\\w+@\\w+.com").matcher(employeeEmails);
    List<String> emailList = new ArrayList<String>();
    
     while (eachEmail.find()){
      emailList.add(eachEmail.group());
     }
    

    现在,我尝试用Javascript获取所有电子邮件,并验证每个电子邮件,如果其中一个不是有效的电子邮件,则抛出一个错误。这是我的代码:

    Javascript:

        var regex1 = /\w+@\w+.com/; // This will get all emails from inputField
        var emailList = regex1; 
        var regex2 = /^([\w-\.]+@([\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中实现这一点。谁能告诉我我错过了什么吗?提前谢谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Gonzalo Fernández-Díez    7 年前

    我希望这能帮助你:

    employeeEmails = "user1@email.com , user2@gmail.com user3@email.com;user4@gmail.com*john@doe";
    
    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 = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[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>');    
    });
    

    资料来源: