Ruby on rails 在RubyonRails中使用regex验证特定后缀的电子邮件地址

Ruby on rails 在RubyonRails中使用regex验证特定后缀的电子邮件地址,ruby-on-rails,ruby,regex,validation,email,Ruby On Rails,Ruby,Regex,Validation,Email,我想验证电子邮件地址与一个特定的后缀,这应该是像电子邮件。它必须有.edu或@mypost.com。例如,我有四个电子邮件地址,如下所示: (一)john@learn.edu-有效 (二)john@mypost.com-有效 (三)john@gmail.com-无效 (四)john@dblist.org-无效 我已经尝试在我的user.rb模型文件中使用下面的代码来解决这个问题,但没有成功 if ('xc@dblist.com' =~ /\A[\w]([^@\s,;]+)@((mypost|[\

我想验证电子邮件地址与一个特定的后缀,这应该是像电子邮件。它必须有
.edu
@mypost.com
。例如,我有四个电子邮件地址,如下所示:

(一)john@learn.edu-有效

(二)john@mypost.com-有效

(三)john@gmail.com-无效

(四)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

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

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

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

请注意,如果不使用捕获的组,只需使用
\A\w[^@\s,;]+@(?:mypost\.com.[\w-]+\.edu)\z

试试这个。看演示


这里有一个相当简单的方法,似乎符合您的规则:

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

不需要此部分
[^@\s;,]
,因为
\w
无论如何都不会捕获这些内容


注意:是了解正则表达式的重要资源。解释在右边。我认为with将帮助您理解您的电子邮件格式无效的原因。

添加有效电子邮件格式的所有规则该条件不需要
=~
将返回
nil
Fixnum
nil
是一个假值,
Fixnum
将是一个真值,因此if语句变得多余@Stribizev与multiline这将起作用,然后与锚定“^$~@rick一起,u接受的答案将不接受
john@learn.sdasd.edu
。您想匹配它吗?对不起,斯特里比雪夫,但我不知道如何在我的
条件下使用它,并且我已经编辑了我的问题。谢谢你的回答。请检查这个,也许它有一些关于什么是错误的提示。在Ruby中。
^[\w\-\.]+@(?:(?:[\w\.\-]+\.edu|mypost\.com))$