验证用户电子邮件是否与两个正则表达式中的一个匹配?

时间:2014-07-28 05:44:23

标签: ruby-on-rails regex email

在我的Rails应用程序中,@ berkeley.edu或@ uw.edu电子邮件地址的大学生可以注册。我有正则表达式验证两个准备好,但因为我需要检查用户输入的电子邮件地址,看看它匹配哪一个我认为我需要创建一个正则表达式,但我不知道如何。这是我的两个正则表达式:

berkeley_regex = /\A[\w+\-.]+@berkeley\.edu\z/i
uw_regex = /\A[\w+\-.]+@uw\.edu\z/i

我的验证:

validates :email, :presence => true, :uniqueness => true, :format => {:with => berkeley_regex}

现在,正则表达式会对两者进行检查,但只匹配一个看起来像?

2 个答案:

答案 0 :(得分:1)

您是否只能对/\A[\w+\-.]+@(berkeley|uw)\.edu\z/i之类的内容进行验证并完成此操作?如果您确实需要稍后确定它是什么,请创建一个只检查后面部分的方法,或返回匹配,或者其他...

答案 1 :(得分:0)

首先,我认为您的正则表达式应该从[\w+\-.]更改为[\w+\-\.]

验证可能是

validates :email, format: { with: "\A#{berkely_regex}|#{uw_regex}\z/i" }

但您需要从vartiables中移除标记(\A\z/i