在Ruby中验证电子邮件地址的最佳/简便方法是什么?

Ran*_*Ran 48 ruby ruby-on-rails ruby-on-rails-3

在ruby中(在服务器端)验证电子邮件地址的最佳/简单方法是什么?

apn*_*ing 62

您可以查看它是否与此Rails验证器中使用的正则表达式匹配:

validates_format_of :email,:with => /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/
Run Code Online (Sandbox Code Playgroud)

但如果您使用Devise,只需执行以下操作:

validates_format_of :email,:with => Devise::email_regexp
Run Code Online (Sandbox Code Playgroud)

来源:http://lindsaar.net/2008/4/14/tip-4-detecting-a-valid-email-address

编辑1:

有用的测试网站:http://www.rubular.com/

  • 虽然我认为答案是好的,但我必须提到ruby!= rails.答案不提供ActiveRecord验证范围之外的解决方案. (3认同)

pax*_*blo 8

在Ruby?与任何语言一样.

向该地址发送一封确认电子邮件,其中包含收件人必须单击的链接,然后才能将该电子邮件地址视为完全验证.

完全格式化的地址可能仍然无效(在该地址没有实际用户,被垃圾邮件过滤器阻止等)的原因有很多.确切知道的唯一方法是成功完成某些描述的端到端交易.

  • +1.Regexp是一种很好的"琐碎拒绝"技术,但不是一个完整的解决方案.与Regexping一起发送验证电子邮件似乎相对最佳. (3认同)

par*_*dog 6

validates :email, presence: true, format: /\w+@\w+\.{1}[a-zA-Z]{2,}/
Run Code Online (Sandbox Code Playgroud)

检查电子邮件字段是否为空白,并且一个或多个字符都在"@"之前并跟随它

添加特异性,任何一个或多个单词字符在之前@和之后的任何一个或多个单词字符之后和之后的特定1 .和至少2个字母之后


MZa*_*oza 5

我知道这是一个老问题,但我一直在寻找一种简单的方法来做到这一点。我遇到了一个email_validator gem, 它的设置和使用非常简单。

作为验证者

validates :my_email_attribute, :email => true

模型外验证

EmailValidator.valid?('narf@example.com') # boolean

希望对大家有帮助。

快乐的外衣