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

Javascript validate list of email addresses comma separated

我正在使用 ServiceNow,我需要验证一个文本框,该文本框将接受以逗号分隔的电子邮件地址列表。

电子邮件地址列表在变量 group_members 中。

验证仅适用于 第一个 电子邮件地址。列表中的第二个电子邮件地址显示为无效,即使我已经使用有效地址列表进行了测试。例如:

Testa@example.com, testb@example.com

testa 将显示为有效,但 testb 将无效。我知道这不是正则表达式,因为相同的电子邮件地址将 return 有效,只要它是列表中的 first。我认为遍历数组或者逗号分隔列表被拆分到数组的方式有问题。你能在这里检查我的逻辑,看看有什么问题吗?感谢您的帮助。

var group_members = g_form.getValue('u_group_members');
var member_split = group_members.split(',');

for (var n = 0; n < member_split.length; n++) {
  var member_info = member_split[n];
  var validRegExp = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

    if (member_info.search(validRegExp) == -1) {
        g_form.showFieldMsg('u_group_members', "Group Members contains an invalid email address. " , 'error');
    }
    else if (member_info.search(validRegExp) == 0) {
        g_form.showFieldMsg('u_group_members', "Group Members email addresses are valid");
    }
}

因为你的逗号后面有一个space。要么删除它,要么在你的正则表达式中考虑它。

var group_members = "testa@example.com, textb@example.com";

document.getElementById('space').addEventListener('click', function(){
  document.getElementById('el').innerHTML = "";
  run();
});

document.getElementById('trim').addEventListener('click', function(){
  document.getElementById('el').innerHTML = "";
  run(true);
});

function run(trim) {
  var member_split = group_members.split(',');

  var valid = true;
  for (var n = 0; n < member_split.length; n++) {
    var member_info = trim ? member_split[n].trim() : member_split[n];
    var validRegExp = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

    if (member_info.search(validRegExp) === -1) {
        valid = false;
        break;
    }
  }
  if (valid)
    document.getElementById("el").innerHTML += "Group Members email addresses are valid.<br/>";
  else
    document.getElementById("el").innerHTML += "Group Members contains an invalid email address.<br/>";
}
<button id="space">Space</button><button id="trim">Trim it</button>
<div id="el"><div>