我正在使用ServiceNow,需要验证一个文本框,该文本框可以接受由逗号分隔的电子邮件地址列表。
电子邮件地址列表存储在变量group_members
中。
验证仅适用于第一个电子邮件地址。即使我已经使用有效地址列表进行了测试,列表中的第二个电子邮件地址也显示为无效。例如:
Testa@example.com, testb@example.com
testa
将显示为有效,但testb
将无效。我知道这不是正则表达式的问题,因为只要它是列表中的第一个电子邮件地址,相同的电子邮件地址将返回有效。我认为循环数组或者将逗号分隔列表拆分到数组中的方法有问题。
您能否检查我的逻辑以查看问题出在哪里?
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");
}
}
member_info=member_info.trim()
以去除字符串开头和结尾的不必要空格。 - anroestivar = emailNo = n + 1;
,并将其放置在valid = false
之后,然后将其包含在.innerHTML
中,例如'电子邮件 #'+emailNo+' 包含一个错误'
。这样,如果列表很长,用户可以快速定位出错的电子邮件。 - dot-punto-dot