2008-03-24 rails 测试题(00005)

2008-03-24 rails 测试题(00005)

对于一个用户输入的Email地址,该怎么检查它,以最大限度的保证该Email地址的可用性及其真实性呢?给出你的思路和ROR实现的代码段。
不懂ROR,以下纯属瞎说。

如果是用正则或者类似的方法去分析字符串:
Email地址,必然被@分割成2部分,后一部分必然被.分割成2部分。
各段都由数字,英文字母,部分符号(这个很难)组成。
没有连续的“.”
其他还没想全。

在ROR里做,能不能用“@”截出域名,然后去PING?
Rails有专有的方法检测email地址的有效性的。比如,

class User < ActiveRecord::Base
...
validates_format_of :email,
          :with => /^[A-Z0-9._%-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i,
          :message => "Must be a vaild email address"
...
end
Email可用的也不多吧!用split('@')后再取数组第2个元素! 再用split('.')后取数组第1个元素!
和可用的Email地址比较就差不多了把!
也不知道行不行! 只是发表自己的看法!
有个网上的正则库,可以找到专门为了email地址编写的正则,验证email地址是否符合rfc规范,此正则我见过一次,非常人所能写出
然后看需求,是否需要验证email地址的domain域名有效性,能否被DNS解析
然后看需求,是否有必要连接该email server服务器,发送查询请求看这个服务器上有没有这个账户
然后看需求,是否要发送确认/激活邮件让客人手动确认
.......
这里的validates要结合正则表达式吧,,在看ruby时 就很头痛这个东西,,各位大虾有冒得 好的法子 来更好掌握 它呢?