我正试图在模型文件中使用validates_format_of来验证电子邮件地址。但是,对于两种特殊情况,我需要输入两个正则表达式。基本上,只允许使用少数顶级域名。
然而,根据验证的源代码,它似乎只允许一个:format键和一组选项作为哈希值。有没有一种方法可以使用多个正则表达式。我试过逻辑运算符,但它似乎只接受第一个。此外,在同一字段上使用两个验证方法不会导致任何内容被接受,因为其中一个违反了另一个条件
为了实际解释,比如说我只想发送gmail或yahoo的电子邮件,而不想发送其他邮件。如何使用正则表达式来表示两者,而不表示其他内容?这是我的gmail代码,它有效:
validates_format_of:email,:with=>(/^([^@\s]+)@((?:gmail+.)+[a-z]{2,})$/i)
如何将其更改为包含另一个顶级域名?
validates_format_of :email,
:with => (/^([^@s]+)@((gmail|yahoo|hotmail).+[a-z]{2,})$/i)
像这样的东西?
最后[a-z]不会捕捉到类似".com.au"或类似的内容,可以吗?
此外,
. is for single character, you want . for an actual period
otherwise 'gmailxcom' would be valid
要在@Neet324的答案基础上构建,可以使用:
validates_format_of :email, :with => (/^([^@s]+)@((.?w+)+)$/i)
捕获任何电子邮件域,包括子域和国家级顶级域。