regex JavaScript数组.prototype.every函数内部不工作?

eoigrqb6  于 2023-06-25  发布在  Java
关注(0)|答案(2)|浏览(120)

所有人
请看下面的代码笔
http://codepen.io/anon/pen/eJNMwJ
我试图将一个字符串数组传递到我的函数Validate email中,该函数反复检查电子邮件,看看它们是否与正则表达式匹配。
然而,由于某种原因,该功能似乎不起作用。
正则表达式是正确的

var validEmail = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

function validEmailList(emails) {
                console.log("running test 2");
        return emails.every(function (email) {
            validEmail.test(email.trim());
        });
    };

    emails = ['bob@bob.com', 'foobar@bob.com'];
    $('.test1').append(validEmail.test("foobar@foo.com"));
    $('.test2').append(validEmailList(emails));

函数似乎没有返回任何东西,我期待一个布尔值。

kcwpcxri

kcwpcxri1#

传递给every的函数也必须有return的内容。

function validEmailList(emails) {
            console.log("running test 2");
    return emails.every(function (email) {
        return validEmail.test(email.trim());
    });
};

虽然如果使用箭头语法,则隐含return

function validEmailList(emails) {
    return emails.every( email => validEmail.test(email.trim()) );
}
7uhlpewt

7uhlpewt2#

Array.prototype.every调用的回调需要返回一个boolean值:

return emails.every(function (email) {
  return validEmail.test(email.trim());
//^^^^^^^
});

相关问题