RoR电子邮件验证--多种Regexes/格式



我正试图在模型文件中使用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)

捕获任何电子邮件域,包括子域和国家级顶级域。

相关内容

  • 没有找到相关文章

最新更新