无论格式如何,都可从文本字段中获取电子邮

时间:2016-03-03 19:47:00

标签: ruby-on-rails ruby regex email

我有一个带有文本字段的表单,用户可以在其中输入多个电子邮件地址。问题是,这些电子邮件地址的格式有很多种。例如:

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

现在,我将它们分开:

emails = params[:invite][:invite_emails].split(', ')
emails.each do |email|
  # send_email
end

即使他们的格式不同,我怎么能收到所有电子邮件?

1 个答案:

答案 0 :(得分:2)

没有绝对的方式来解析电子邮件。但我们可以试着掩盖一些好的理由:

s = '"Bob Smith" <bob@company.com>, joe@company.com, "John Doe"<john@company.com>'
s.scan(/\w+@\w+\.\w+/)
#=> ["bob@company.com", "joe@company.com", "john@company.com"]

这也将涵盖通用顶级域名(gTLD):

s = '"Bob Smith" <bob@company.com>, joe@company.com, "John Doe"<john@company.com> smith@mango.co.uk'
s.scan(/\w+@\w+\.\w+[\.\w]{0,4}/)
#=> ["bob@company.com", "joe@company.com", "john@company.com", "smith@mango.co.uk"]

如果您还有其他特殊情况,那么您只需稍微调整一下Regex。