Javascript验证以逗号分隔的电子邮件地址和名称列表

Javascript验证以逗号分隔的电子邮件地址和名称列表,javascript,arrays,string,split,Javascript,Arrays,String,Split,我需要验证一个文本框,该文本框将接受由逗号分隔的姓名和电子邮件地址列表。如需示例,请查看下图 我如何按姓名和电子邮件分开: 代码示例是如果我只按电子邮件地址分开,并且我想扩展这样一个功能 for (var i = 0; i < $scope.emailAddresses.length; i++) { var addr = $scope.emailAddresses[i]; if (addr.address !== null && addr.address

我需要验证一个文本框,该文本框将接受由逗号分隔的姓名和电子邮件地址列表。如需示例,请查看下图

我如何按姓名和电子邮件分开:

代码示例是如果我只按电子邮件地址分开,并且我想扩展这样一个功能

for (var i = 0; i < $scope.emailAddresses.length; i++) {
    var addr = $scope.emailAddresses[i];
    if (addr.address !== null && addr.address !== "") {
        message.users.push({email: addr.address});
    }
}
if($scope.massAddUsers !== undefined)
{
    var massEmails = $scope.massAddUsers.split(",");
    for(var j = 0; j < massEmails.length; j++)
    {
        var massEmailAddr = massEmails[j];
        if (massEmailAddr !== null && massEmailAddr.trim() !== "") {
            message.users.push({email: massEmailAddr.trim()});
        }
    }
}
如中所述,您可以使用验证电子邮件地址

function validateEmail(email) {
    var re = /^(([^<>()\[\]\\.,;:\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 re.test(String(email).toLowerCase());
}

您应该首先在每个逗号分隔的值处拆分字符串,然后在数组中循环,直到只剩下3个元素。使用splice,您可以每次创建一个新数组,并将firstName、lastName和email分配给这些数组元素,因为您知道它们属于一起

    // Get the string   
    var content = $scope.theUserInput;
    // Split string at every comma, which makes every comma seperated value an array element
    var array = content.split(',');
    // For every array element as long as there are at least 3 left
    while(array.length > 2) {
      // Take first 3 array element (e.g. felix, fritz, mail@a.com) and assign it to variables: first, last and email
      const [first, last, email] = array.splice(0,3);
      // Do your email verification here ...
      // then push to array all together:
      $scope.users.push({
        firstname: first,
        lastname: last,
        email: email
     });

一个完整的例子:

我如何调整我当前的电子邮件算法以包含名称我如何使用splice以正确的顺序发送第一封、最后一封和电子邮件虽然此代码片段可能是解决方案,但确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。@yivi我在回答OP时也付出了同样的努力。
var massEmails = $scope.massAddUsers.split(",");
for(massEmailAddr of massEmails ){
    massEmailAddr = massEmailAddr.trim();
    if(validateEmail(massEmailAddr)){
        message.users.push({email: massEmailAddr});
    }
    else if (massEmailAddr !== "") {
        message.users.push({name: massEmailAdd});
    }
}
    // Get the string   
    var content = $scope.theUserInput;
    // Split string at every comma, which makes every comma seperated value an array element
    var array = content.split(',');
    // For every array element as long as there are at least 3 left
    while(array.length > 2) {
      // Take first 3 array element (e.g. felix, fritz, mail@a.com) and assign it to variables: first, last and email
      const [first, last, email] = array.splice(0,3);
      // Do your email verification here ...
      // then push to array all together:
      $scope.users.push({
        firstname: first,
        lastname: last,
        email: email
     });