如何在 JavaScript 中拆分具有多种格式的电子邮件列表?
Posted
技术标签:
【中文标题】如何在 JavaScript 中拆分具有多种格式的电子邮件列表?【英文标题】:How do I split a list of emails with multiple formats in JavaScript? 【发布时间】:2021-12-04 19:53:48 【问题描述】:我有一个电子邮件列表,电子邮件有两种格式:
-
名称为
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>"]
【问题讨论】:
也许pastedData.match(/[^\s<>,@]+@[^\s<>,]+/g)
可以。
@WiktorStribiżew 它不适用于拆分方法var emails = pastedData.split(/[^\s<>,@]+@[^\s<>,]+/g);
你不需要使用split
,是吗?
@WiktorStribiżew 是的,我需要拆分列表以单独获取每封电子邮件
不,你没有。您始终可以使用最适合当前场景的方法提取数据。
【参考方案1】:
假设您不是在寻找电子邮件地址验证器,并且已经知道您的列表中有电子邮件地址,那么您可以这样做:
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);
【讨论】:
以上是关于如何在 JavaScript 中拆分具有多种格式的电子邮件列表?的主要内容,如果未能解决你的问题,请参考以下文章
13如何拆分含有多种分隔符的字符串 14如何判断字符串a是否以字符串b开头或结尾 15如何调整字符串中文本的格式 16如何将多个小字符串拼接成一个大的字符串