我目前正在设计一个注册页面,在我的model/user.rb
文件中,我如何指定只有以@gmail.com
结尾的这些电子邮件地址才能成功注册? 谢谢如何在rails上验证特定的电子邮件模式
0
A
回答
-1
使用include
像:
email= "[email protected]"
email.include? "@gmail.com" #returns true
0
您可以按照这种方式。
在模型中
validates :email, format: { with: /^[a-z0-9](\.?[a-z0-9]){5,}@g(oogle)?mail\.com$/i,
message: "Your message" }
你也可以改变正则表达式。
1
我会成立2个验证:
第一个确认的电子邮件地址是有效的,用你喜欢的电子邮件正则表达式(我提供一个例子,source):
EMAIL_REGEX = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i validates_format_of :email, with: EMAIL_REGEX
,用于验证的电子邮件地址的域的第二个:
GMAIL_DOMAINS = %w{gmail.com googlemail.com} validates :email_is_gmail private def email_is_gmail GMAIL_DOMAINS.each do |domain| return true if email.end_with?('@' + domain) end end
警告:
关于第一个验证,我劝你最好确保你的代码的不同部分不使用不同的正则表达式验证电子邮件地址。例如,如果您正在使用Devise,则应使用
Devise.email_regexp
而不是EMAIL_REGEX
。 (其实,如果你使用Devise或类似的,你甚至不需要自己验证电子邮件地址)。在代码的不同部分使用不同的正则表达式可能会导致创建具有在某些地方验证的电子邮件地址的帐户,但在其他地方验证失败。这可能会让最终用户恼火。 (举个例子,看到sub-addressing最后一段Wikipedia上关于电子邮件地址页面上,并想象一个网站,有时允许
+
,有时没有。)- 作为@YOU在评论中提到,通过域名过滤可能不完全是你想要的。很多Google帐户不会以
@gmail.com
(例如,googlemail.com或任何使用GSuite的企业都有自己的域名)结束。如果您想只允许拥有Google帐户的用户,我建议您查看Google Sign-In身份验证系统。 - 有人主张反对用正则表达式验证电子邮件地址:Stop Validating Email Addresses With Regex
只需发送他们已经
+0
感谢'Devise.email_regexp' – Horacio
相关问题
- 1. Rails如何禁用电子邮件验证独特检查
- 2. Rails 3 Devise:如何发送验证电子邮件到其他电子邮件
- 3. 在rails上验证退回的电子邮件ID
- 4. Zend framework2电子邮件验证为特定的地址,如Gmail和阻止特定的电子邮件地址
- 5. Zend的形式验证电子邮件
- 6. 自定义电子邮件验证 - 无法设置电子邮件验证
- 7. 窗体上的电子邮件验证
- 8. Nativescript电子邮件验证模块
- 9. 如何发送电子邮件到特定的电子邮件?
- 10. 如何验证电子邮件?
- 11. 如何使用电子邮件验证
- 12. 如何验证电子邮件猫鼬
- 13. 如何验证电子邮件地址
- 14. 如何改进电子邮件验证
- 15. 如何建立验证电子邮件
- 16. 如何验证Rails 3.1中的cyrilic电子邮件?
- 17. 如何使用Rails中的Authlogic跳过电子邮件验证?
- 18. 电子邮件验证在Javascript中为特定方案
- 19. jQuery验证插件:电子邮件模式的测试值?
- 20. 电子邮件验证javascript
- 21. 电子邮件验证PHP
- 22. PHP电子邮件验证
- 23. 梨电子邮件验证
- 24. 电子邮件验证
- 25. PHP - 电子邮件验证
- 26. ResearchKit:验证电子邮件
- 27. 电子邮件ID验证
- 28. Firebase电子邮件验证
- 29. Jquery - 验证电子邮件
- 30. NSRegularExpression验证电子邮件
如何电子邮件约Googlemail电子邮件?或使用Gmail的自定义域? – YOU