加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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"]

这与您添加到问题中的几乎相同,只是更紧凑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读