Ruby邮件检查(RFC 2822)

7

有人知道在Ruby中验证电子邮件地址是否符合RFC 2822电子邮件格式的正则表达式吗?

我想做的是:

string.match(RFC_2822_REGEX)

其中“RFC_2822_REGEX”是验证字符串是否符合有效的RFC 2822格式的正则表达式。


可能是重复的问题:如何使用正则表达式验证电子邮件地址? - Marc-André Lafortune
3个回答

12

您可以使用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"。 :( - indirect

2

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

该工具基于RFC2822规则进行正则表达式验证(这是一个庞大的正则表达式),还可以检查域名在DNS中是否有效(是否有MX或A记录),并进行测试交付以验证该域名的MX是否接受给定地址的消息。这后两个检查是可选的。


1

这个正则表达式允许像“test@example/x.com”这样的电子邮件,因此也允许“test@example/////////////////////////////////x.com”。 - Jakob Cosoroaba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接