使用正则表达式进行多个电子邮件验证。循环在第一次验证后终止

时间:2014-01-18 01:43:19

标签: javascript regex email-validation

我想我离这儿很近。

我正在尝试遍历数组,并在每次迭代时检查该值是否为有效的电子邮件地址。

问题是,一旦遇到false或true,循环就会终止。如何在不终止循环的情况下迭代数组?

validateForm: function() {

    var emails = $('#email-addresses').val(),
        emailArray = emails.split(',');

    for (var i = 0; i < emailArray.length; i++) {
        if( ! this.validateEmail(emailArray[i].trim())) {
            return false;
        }
        return true;
    };
},

validateEmail: function(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(email);
}

2 个答案:

答案 0 :(得分:2)

这取决于你想在这里做什么。如果你想为每张支票保留一个结果,那么看看lincb的答案。如果您只想获得关于所有电子邮件是否有效的真假,请执行以下操作:

validateForm: function() {

    var emails = $('#email-addresses').val(),
        emailArray = emails.split(',');
    var isValid = true;
    for (var i = 0; i < emailArray.length && isValid == true; i++) {
        if( ! this.validateEmail(emailArray[i].trim())) {
            isValid = false;
        }
    };
    return isValid;
},

答案 1 :(得分:0)

在Javascript中,无论循环如何,return都将结束该函数。这是一个可能的解决方案:

validateForm: function() {

    var emails = $('#email-addresses').val(),
        emailArray = emails.split(',');
    var returns = new Array();

    for (var i = 0; i < emailArray.length; i++) {
        if( ! this.validateEmail(emailArray[i].trim())) {
            returns[i] = false;
        }
        returns[i] = true;
    }
    return returns;
},