我想过滤一个只包含电子邮件的数组,
我做了这个
emails = emails.filter((x)=>(x !== (undefined || null || '')))
删除空值,但可以接受不是电子邮件的值。
答案 0 :(得分:2)
您可以使用接受的答案here
中的正则表达式let 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,}))$/;
emails = emails.filter(e =>e && e.toLowerCase().match(re));
答案 1 :(得分:1)
使用找到的here正则表达式,您可以像这样完成过滤器:
var emails = [];
emails = emails.filter(e => typeof e == "string" && validEmail(e));
console.log(emails);
function validEmail(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.toLowerCase());
}