在我的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}
现在,正则表达式会对两者进行检查,但只匹配一个看起来像?
答案 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
)