【问题标题】:Validate multiple emails separated by semicolons and all must match a specific domain验证以分号分隔的多封电子邮件,并且所有电子邮件都必须与特定域匹配
【发布时间】:2018-05-18 08:13:38
【问题描述】:

我想验证这个包含多封电子邮件的文本字段email;全部用分号分隔,但这不起作用。当 msn.com 与其他电子邮件一起输入时,它应该会中断。

var isMsn = ["msn.com"];
function myFunction() {
    var str = email.value;
    //var isMsn = str.includes("msn.com");
    var res = str.split(";");
    var isValid = false;
    //alert(res.length);
    for (var i = 0; i < res.length; i++){
        //alert(res[i]);
        var x = res[i];
        //check to see if this is an valid emAIL then
        var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
        if(x.match(mailformat)){
           alert("valid email address!");
           //IF isMsn = TRUE then check to see if is contains msn.com
           if (x.contains(isMsn) ){
               alert("it is MSN");
               //res[+1];
               isValid = true;   
           } 
           else {
               alert('no MSN');
               if (res.includes(isMsn)){
                   //alert('Cannot mix MSN emails with other');
                   //isValid = false;
                   //res[-1];
                   break;
               }
               //else{
               //alert('it is other');
               //isValid = true;
               //}
           }  
       }
       else{
           alert("You have entered an invalid email address!");
           isValid = false;
       } 
   }    
}

我希望它循环通过,并且所有电子邮件必须匹配 msn.com 或其他 NOT Both。例如,user@msn.com;user1@msn.com 或 user@hotmail.com;user1@hotmail.com 但不是 user@msn.com;user1@hotmail.com

不确定 .includes 是否是最佳选择!

【问题讨论】:

  • 我假设您的代码不起作用。请编辑您的问题并解释什么不起作用。另外,考虑在 JSfiddle 中创建一个工作版本,这样我们就可以看到问题所在。
  • 它不起作用,理想情况下,当其他电子邮件与 msn.com 一起输入时;它应该会破裂,但不会!

标签: javascript arrays validation email-validation


【解决方案1】:

1) 你应该使用includes 而不是contains;
2)includescontains方法接受的是字符串,不是数组,所以应该是res.includes(isMsn[0])

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes

如果您想通过多个域进行验证 - 您不应将其命名为 isMsn,而应将其命名为 prohibitedDomains,然后通过此数组命名为 Array.some (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)。

prohibitedDomains.some((domain) => res.includes(domain))

【讨论】:

  • 但我希望每封电子邮件都经过验证,并且必须是 user@msn.com;user1@msn.com 或 user@hotmail.com;user1@hotmail.com 而不是 user@msn.com; user1@hotmail.com
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 2015-05-16
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多