Javascript validate comma separated list of email addresses

I am using ServiceNow and I need to check a textbox that will accept a comma separated list of email addresses.

The list of email addresses is in a variable group_members

.

Verification is performed only for the first email address. The second email in the list shows up as invalid even though I checked the list of valid addresses. For example:

Testa@example.com, testb@example.com

testa

will show up as valid, but testb

will not be valid. I know this is not a regex because the same email will return a valid one if it is the first in the list. I think there is something wrong with the loop over the array, or perhaps with the way the comma separated list is split into an array. Can you check my logic here to see what is wrong? I appreciate the help.

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

      

+3


source to share


1 answer


This is because you have a space after the comma. Either remove it or account for it in your regex.



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>
      

Run codeHide result


+2


source







All Articles