Javascript 使用分号分隔多个电子邮件地址时出现的问题

Javascript 使用分号分隔多个电子邮件地址时出现的问题,javascript,regex,Javascript,Regex,我有一个输入字段,可以在其中添加多个电子邮件地址,并以分号作为分隔符。根据电子邮件地址,可以在其中包含分号,即“()[]:,;-/=?^”@example.org是有效的电子邮件 当我使用“abc;xyz”@example.com;hhh@exam.com.split(“;”)我得到“\”abc“,”xyz\“@example.com“,”hhh@exam.com". 我的要求是我需要获得“abc;xyz@example.com"及hhh@exam.com只是 问题是,即使电子邮件地址包含分号,

我有一个输入字段,可以在其中添加多个电子邮件地址,并以分号作为分隔符。根据电子邮件地址,可以在其中包含分号,即“()[]:,;-/=?^”@example.org是有效的电子邮件

当我使用“abc;xyz”@example.com;hhh@exam.com.split(“;”)我得到“\”abc“,”xyz\“@example.com“,”hhh@exam.com". 我的要求是我需要获得“abc;xyz@example.com"及hhh@exam.com只是

问题是,即使电子邮件地址包含分号,如何在电子邮件地址的末尾进行检查和拆分,以便获得完整的电子邮件地址,而不是其中的一部分。请建议。这是plnkr。请建议

$scope.validateEmailAddress = function() {
    var regex = /^((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x20\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))/;

    if ($scope.email.indexOf(';') > 0) {

        $scope.emailArray = $scope.email.split(";")
        for (var x = 0; x < $scope.emailArray.length; x++) {
                var emailId = $scope.emailArray[x];
                emailId = emailId.trim();
                if(reg.test(emailId)){
                    return true;
                } else {
                    return false;
                }
        }
    }
  }
$scope.validateEmailAddress=函数(){
(5)以下,(以下::[a-z0-10-10-9 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5)部分(以下以下::)或(以下::::)或(以下以下以下:::)将将将,)或(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7)或(以下)或(以下以下)或(以下)或(以下)或(以下,(,(,(,(,(,(,(以下:::::::::::::::::)将将将将将将将)或(1-10)或(1-10)或(a-10)或(a-10)或(a-10-10)或(a-z0-z0-z0-z0-z0-z0-0-(?:[a-z0-9-]*[a-z0-9])?\)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\[(?:(?:(2(5[0-5]|[0-4][0-9])1[0-9][0-9]|[1-9]|[0-9])\){3:(2(5[0-5]1240-4][0-9][1-9]|[1-9]?[0-9]。[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]。\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)/;
如果($scope.email.indexOf(“;”)>0){
$scope.emailArray=$scope.email.split(“;”)
对于(var x=0;x<$scope.emailArray.length;x++){
var emailId=$scope.emailArray[x];
emailId=emailId.trim();
if(注册测试(emailId)){
返回true;
}否则{
返回false;
}
}
}
}

我建议您在输入时使用不同的符号分隔两封电子邮件。好的,电子邮件中会有冒号,冒号是分隔符。那么您如何识别两封单独的电子邮件?正如您所做的,它会显示3封电子邮件。抱歉,我不知道如何修复它。实际上,如果您查看RFC 2882,电子邮件地址中几乎没有不能使用的内容.我确实提出了一个正则表达式,可以解析电子邮件地址列表,但它的长度超过4000个字符,并且使用Perl正则表达式语法。