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

时间:2018-07-31 09:28:37

标签: javascript regex

我有一个输入字段,可以在其中添加多个用分号作为分隔符的电子邮件地址。根据{{​​3}},电子邮件地址中可以包含分号,即“()<>[]:,;;-/=?^"@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 email address wiki。请提出建议。

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

0 个答案:

没有答案