ruby – 从地址簿中解析电子邮件
发布时间:2020-12-17 02:42:41 所属栏目:百科 来源:网络整理
导读:我们的应用程序有一个邀请页面,用户可以在其中导入地址簿.我们正在使用外部服务来获取它们,因此它只是将结果放入文本区域.我们开始只是用逗号分割结果,并很快发现由于以下原因无法正常工作: "Smith,Joe" jsmith@example.com,"Jackson,Joe" jjackson@example
我们的应用程序有一个邀请页面,用户可以在其中导入地址簿.我们正在使用外部服务来获取它们,因此它只是将结果放入文本区域.我们开始只是用逗号分割结果,并很快发现由于以下原因无法正常工作:
"Smith,Joe" <jsmith@example.com>,"Jackson,Joe" <jjackson@example.com> 它可以在2个条目之间工作,但也可以在它们内部分开.只是想知道是否有一个众所周知的万无一失的方法来完成这项工作. 也许正则表达式会起作用?我很糟糕,有人可以告诉我正则表达式会将电子邮件提取到一个数组…… 像这样的东西: emails = recipients.scan(/.*@.*/) <<==== but i know that's not right 编辑 看起来像这样的东西可能会起作用.如果这适用于特殊情况,任何人都有任何建议: emails = recipients.scan(/[a-z0-9_.-]+@[a-z0-9-]+.[a-z.]+/i) 解决方法ruby-1.9.3-p0 :055 > a = '"Smith,Joe" <jjackson@example.com>'; ruby-1.9.3-p0 :056 > b = a.scan(/<(.*?)>/).flatten => ["jsmith@example.com","jjackson@example.com"] ruby-1.9.3-p0 :057 > c = a.scan(/"(.*?)"/).flatten => ["Smith,Joe",Joe"] 每个数组中的名称/电子邮件索引是相同的,因此c [1]是b [1]电子邮件的名称. 根据你的评论如何他的: ruby-1.9.3-p0 :008 > a = '"Smith,Joe" <jjackson@example.com>'; ruby-1.9.3-p0 :009 > b = '"test@domain.com,test2@domain.com"'; ruby-1.9.3-p0 :010 > b.scan(/w*@w*.w*/) => ["test@domain.com","test2@domain.com"] ruby-1.9.3-p0 :011 > a.scan(/w*@w*.w*/) => ["jsmith@example.com","jjackson@example.com"] 这与您添加到问题中的几乎相同,只是更紧凑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |