如何从文本中解析/修剪电子邮件地址

How to parse/trim email addresses from text

本文关键字:修剪 电子邮件地址 文本      更新时间:2023-09-26

类似于这个问题,但不确定在这种情况下如何实现。

受信任的用户(不需要关心验证输入(正在将电子邮件地址键入/粘贴到文本字段中。在模糊事件中,我想查看文本并清理他输入的内容(通常是在从电子邮件客户端复制和粘贴地址列表之后(。

"Bob Smith" <bob@company.com>, joe@company.com, "John Doe"<john@company.com>

将被调整为:

bob@company.com, joe@company.com, john@company.com

此正则表达式应删除双引号中的任何字符以及<>字符。

/".*?"|[<>]/

在Javascript中,您可能有以下内容:

line.replace(/".*?"|[<>]/g, '');

有效的电子邮件地址可能非常奇怪,所以我建议不要禁止该字段中的任何内容,否则很可能您的程序毫无用处,因为您的用户将无法将电子邮件发送到有效的电子邮件地址。

要阅读整个故事,请参阅这篇博客文章或自己去RFC。

var emailList = userInput
    .replace(/[^,;]*.?</g, "")
    .replace(/>/g, "")
    .replace(/[,; ]{1,}/g, "'n")
    .replace(/['n]{2,}/g, "'n")
    .split("'n")

这允许以以下格式提供电子邮件列表(包括从你的谷歌复制粘贴电子邮件列表到框(:

"Bob Rob"<bob@company.com>, job@company.com; rob@company.com job@somewhere.com

电子邮件ID可以用,;或换行符分隔。

您可以使用.math()方法将电子邮件快速解析为一个数组:

inputval.match(/[A-z0-9]+@[A-z0-9]+.[A-z]{2,3}/g)

如果你想把它转换成字符串,你可以添加.join(', ').join('; ')。正则表达式会简化。有相当多的正则表达式可以用来解析电子邮件,但上面的是一个简化版本。正如下面的评论所指出的,它没有考虑子域或多部分TLD(它也没有考虑电子邮件地址第一部分的+符号(。替换为符合您需要的正则表达式。

myEmailList=userInput.match(/[a-zA-z0-9_.]+@[a-zA-Z0-9_.]+'.(com|org|whatever)/g);
myEmailListString=myEmailList.join(', ');

或者,若你们想要一组电子邮件地址,只需填写第一行即可。