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