Ruby + REGEX:验证电子邮件域

时间:2015-06-14 23:12:01

标签: ruby-on-rails regex ruby-on-rails-4

我允许用户在公司中创建其他帐户。

IE。尼基有一个帐户,她的公司是耐克。所以她的电子邮件地址是nicky@nike.com。

因为她的公司是“耐克”,所以我只喜欢与新帐户关联的电子邮件地址为@ nike.com。如果她试图创建bob@nike.com.au,则不允许这样做。

我试图找到与Nicky的域名匹配的正则表达式,以及她在新帐户字段中输入的域名。如果已被接受,她可以创建新帐户。否则,它会抛出错误。

1 个答案:

答案 0 :(得分:4)

你熟悉正则表达式吗?你不应该来说“我需要一个能够做到这一点的代码:......”而不给你自己的输入,你的帖子可能会变得很粗鲁。我会回答你关于正则表达式使用的问题。

你可以使用这样的正则表达式从你的电子邮件输入中获取域:(?<=@)([^\s]+)(?=\s|$)(由于lookbehind而在javascript中不起作用)。有关示例和说明,请参阅https://regex101.com/r/qX1qF5/3

基于stackoverflow的一些答案,如果你使用的是Ruby,我们只能假设你是因为标签而不是你的实际帖子,你可以使用scanmatch来捕获它:

domain = eMailInput.scan(/(?<=@)([^\s]+)(?=\s|$)/).first

然后将它与您的域名变量进行比较,您就可以得到所需的答案。似乎不应该使用正则表达式来完成实际的“验证”部分。

无论如何,这就是理论,以及我如何处理这个问题。现在继续在您的代码中使用它并告诉我们它是否有效或者您遇到的问题。