我有一个带有文本字段的表单,用户可以在其中输入多个电子邮件地址。问题是,这些电子邮件地址的格式有很多种。例如:
"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
即使他们的格式不同,我怎么能收到所有电子邮件?
答案 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。