0

我想确保只有拥有有效.edu电子邮件地址的学生才能注册。

这是rails doc的一种方法

validates :email, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create }

我对正则表达式很弱。我扔给/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i谷歌,测试字符串是launch@bacon.com.

我有 0 正则表达式经验。如果测试字符串是.edu正则表达式是什么?你可以给我指出我能找到的信息来解决这个问题。

4

2 回答 2

1

我将实施两个验证:

  1. 检查正确的电子邮件格式

validates :email, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create }

  1. 检查 .edu 域

validates :email, :format => { :with => /.edu\Z/i, :on => :create }

于 2013-08-27T21:00:25.410 回答
0

您只需一个正则表达式即可完成此操作。

以下不是正则表达式如何工作的完整细分,但它可能有助于让您了解正在发生的事情。假设电子邮件地址是me@mydomain.example.com。然后:

  • me火柴/([^@\s]+)/
  • mydomain.火柴/(?:[-a-z0-9]+\.)/
  • example.也匹配/(?:[-a-z0-9]+\.)/
  • mydomain.example.火柴/(?:[-a-z0-9]+\.)+/
  • com火柴/[a-z]{2,}/

所以你想改变它,以便最后一点,/[a-z]{2,}/正则表达式,只能匹配edu

/\A([^@\s]+)@((?:[-a-z0-9]+\.)+edu)\Z/i
于 2013-08-27T22:12:54.010 回答