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

时间:2011-08-17 19:51:10

标签: javascript parsing email

this question类似,但在这种情况下不确定如何实施。

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

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

将被修剪为:

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

5 个答案:

答案 0 :(得分:4)

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

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

在Javascript中,您可能会有以下几点:

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

答案 1 :(得分:4)

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

阅读整个故事see this blog post或自己去寻找RFC。

答案 2 :(得分:3)

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

这允许以下列格式提供电子邮件列表(包括 复制并粘贴您的电子邮件列表Google To box):

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

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:-2)

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

如果你想要一组电子邮件地址,或者只做第一行。