筛选仅包含电子邮件的数组

时间:2018-03-21 11:26:14

标签: javascript node.js

我想过滤一个只包含电子邮件的数组,

我做了这个

 emails = emails.filter((x)=>(x !== (undefined || null || '')))

删除空值,但可以接受不是电子邮件的值。

2 个答案:

答案 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());
}