【发布时间】:2010-10-06 20:12:48
【问题描述】:
有谁知道 Ruby 中用于验证电子邮件地址是否采用正确的 RFC 2822 电子邮件格式的正则表达式是什么?
我想做的是:
string.match(RFC_2822_REGEX)
其中“RFC_2822_REGEX”是用于验证我的字符串是否为有效 RFC 2882 格式的正则表达式。
【问题讨论】:
有谁知道 Ruby 中用于验证电子邮件地址是否采用正确的 RFC 2822 电子邮件格式的正则表达式是什么?
我想做的是:
string.match(RFC_2822_REGEX)
其中“RFC_2822_REGEX”是用于验证我的字符串是否为有效 RFC 2882 格式的正则表达式。
【问题讨论】:
您可以使用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,并检查该地址是否包含域。
【讨论】:
http://theshed.hezmatt.org/email-address-validator
是否基于 RFC2822 规则进行正则表达式验证(这也是正则表达式的怪物),它还可以检查域在 DNS 中是否有效(具有 MX 或 A 记录),并进行测试交付以验证 MX对于域将接受给定地址的消息。最后两项检查是可选的。
【讨论】:
试试this:
【讨论】: