如何在 JavaScript 中拆分具有多种格式的电子邮件列表?
How do I split a list of emails with multiple formats in JavaScript?
我有一个电子邮件列表,电子邮件有两种格式:
- 姓名为
name <email@address.com>
- 没有名字
email@address.com
我想知道是否有办法在 Javascript 中用不同的分隔符拆分此列表。
示例列表:
email@address.com,name1 <email1@address.com>,email2@address.com
或
email@address.com,email1@address.com,email2@address.com
或
email@address.com email1@address.com name2 <email2@address.com>
或
email@address.com email1@address.com email2@address.com
或
email@address.com
name1 <email1@address.com>
email2@address.com
或
email@address.com
email1@address.com
email2@address.com
目前我用简单的电子邮件格式 email@address.com
的三个分隔符拆分了列表,但我仍然对如何做到这一点感到困惑,包括名称格式 name <email@address.com>
?
这是我为此使用的代码:
var emailInput = $(this);
var clipboardData = e.originalEvent.clipboardData || window.clipboardData;
var pastedData = clipboardData.getData('Text');
var emails = pastedData.split(/[\r,\s]+/);
例如我需要提取的内容
email@adress.com name <email@address.com>
==> ["email@address.com","name <email@address.com>"]
假设您不是在寻找电子邮件地址验证器,并且已经知道您的列表中有电子邮件地址,那么您可以这样做:
let data = `
email1@address.com,name2 <email2@address.com>,email3@address.com
email4@address.com,email5@address.com,email6@address.com
email7@address.com email8@address.com name9 <email9@address.com>
email10@address.com email11@address.com email12@address.com
name13 <email13@address.com>
email14@address.com
email15@address.com
email16@address.com
`;
let result = data.match(/[^,;<>\s]+@[^,;<>\s]+|[^,;<>\s]+\s+<[^,;<>\s]+@[^,;<>\s]+>/g);
console.log(result);
我有一个电子邮件列表,电子邮件有两种格式:
- 姓名为
name <email@address.com>
- 没有名字
email@address.com
我想知道是否有办法在 Javascript 中用不同的分隔符拆分此列表。
示例列表:
email@address.com,name1 <email1@address.com>,email2@address.com
或
email@address.com,email1@address.com,email2@address.com
或
email@address.com email1@address.com name2 <email2@address.com>
或
email@address.com email1@address.com email2@address.com
或
email@address.com
name1 <email1@address.com>
email2@address.com
或
email@address.com
email1@address.com
email2@address.com
目前我用简单的电子邮件格式 email@address.com
的三个分隔符拆分了列表,但我仍然对如何做到这一点感到困惑,包括名称格式 name <email@address.com>
?
这是我为此使用的代码:
var emailInput = $(this);
var clipboardData = e.originalEvent.clipboardData || window.clipboardData;
var pastedData = clipboardData.getData('Text');
var emails = pastedData.split(/[\r,\s]+/);
例如我需要提取的内容
email@adress.com name <email@address.com>
==> ["email@address.com","name <email@address.com>"]
假设您不是在寻找电子邮件地址验证器,并且已经知道您的列表中有电子邮件地址,那么您可以这样做:
let data = `
email1@address.com,name2 <email2@address.com>,email3@address.com
email4@address.com,email5@address.com,email6@address.com
email7@address.com email8@address.com name9 <email9@address.com>
email10@address.com email11@address.com email12@address.com
name13 <email13@address.com>
email14@address.com
email15@address.com
email16@address.com
`;
let result = data.match(/[^,;<>\s]+@[^,;<>\s]+|[^,;<>\s]+\s+<[^,;<>\s]+@[^,;<>\s]+>/g);
console.log(result);