使用Ruby-on-Rails中的regex验证特定后缀的电子邮件地址

时间:2015-07-23 12:58:04

标签: ruby-on-rails ruby regex validation email

我想验证带有特定后缀的电子邮件地址,该后缀应该类似于电子邮件。它必须为.edu或必须为@mypost.com。例如,我有四个电子邮件地址,如下所示:

1)john@learn.edu - 有效

2)john@mypost.com - 有效

3)john@gmail.com - 无效

4)john@dblist.org - 无效

我尝试使用我的user.rb模型文件中的以下代码来解决问题,但无济于事。

if ('xc@dblist.com' =~ /\A[\w]([^@\s,;]+)@((mypost|[\w-]+\.)+(edu|com))\z/i) != nil
  return true
else
  return false
end

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

m=3

请参阅demo(我使用\A\w([^@\s,;]+)@(mypost\.com|[\w-]+\.edu)\z / ^进行多语言模式演示)

$部分与任何(mypost\.com|[\w-]+\.edu)域和.EDU匹配。

请注意,如果您不使用捕获的组,请使用MYPOST.COM

答案 1 :(得分:1)

\A\w([^@\s,;]+)@(?:([\w-]+\.)+edu|mypost\.com)\z

试试这个。看看演示。

https://regex101.com/r/oC5rY5/2

答案 2 :(得分:1)

这是一个相当简单的,似乎符合你的规则:

^[\w\-\.]+@(?:(?:[\w\.\-]+\.edu|mypost\.com))$

Example

此部分[^@\s;,]不需要,因为\w无法捕获这些内容。

注意: regex101.com是理解正则表达式的绝佳资源。 Example of your regex解释权在右边。我认为这将有助于你理解为什么你的工作不起作用。