【问题标题】:Ruby email check (RFC 2822)Ruby 电子邮件检查 (RFC 2822)
【发布时间】:2010-10-06 20:12:48
【问题描述】:

有谁知道 Ruby 中用于验证电子邮件地址是否采用正确的 RFC 2822 电子邮件格式的正则表达式是什么?

我想做的是:

string.match(RFC_2822_REGEX)

其中“RFC_2822_REGEX”是用于验证我的字符串是否为有效 RFC 2882 格式的正则表达式。

【问题讨论】:

标签: ruby regex email


【解决方案1】:

您可以使用mail gem 根据 RFC2822 解析任何字符串,如下所示:

def valid_email( value )
  begin
   return false if value == ''
   parsed = Mail::Address.new( value )
   return parsed.address == value && parsed.local != parsed.address
  rescue Mail::Field::ParseError
    return false
  end
end

这会检查是否提供了电子邮件,即为空地址返回 false,并检查该地址是否包含域。

【讨论】:

  • 这不会解析 RFC3696 中列出的有效电子邮件,包括“Abc\@def@example.com”。 :(
【解决方案2】:

http://theshed.hezmatt.org/email-address-validator

是否基于 RFC2822 规则进行正则表达式验证(这也是正则表达式的怪物),它还可以检查域在 DNS 中是否有效(具有 MX 或 A 记录),并进行测试交付以验证 MX对于域将接受给定地址的消息。最后两项检查是可选的。

【讨论】:

    【解决方案3】:

    试试this:

    【讨论】:

    • 这个正则表达式允许像“test@example/x.com”这样的电子邮件,因此“test@example////////////////// ///////////x.com"
    猜你喜欢
    • 2013-09-01
    • 2015-09-16
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2016-02-04
    • 2013-03-28
    • 2014-02-27
    • 2015-09-17
    相关资源
    最近更新 更多