我目前正在設計一個註冊頁面,在我的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 4驗證電子郵件中是否存在特定域
- 3. Rails如何禁用電子郵件驗證獨特檢查
- 4. 如何驗證來自特定域的電子郵件地址?
- 5. mootools |獨特的電子郵件驗證
- 6. Rails:驗證PayPal電子郵件?
- 7. Rails 3 Devise:如何發送驗證電子郵件到其他電子郵件
- 8. Android電子郵件驗證與Firebase電子郵件驗證
- 9. 在rails上驗證退回的電子郵件ID
- 10. Zend framework2電子郵件驗證爲特定的地址,如Gmail和阻止特定的電子郵件地址
- 11. 如何驗證電子郵件和替代電子郵件?
- 12. Zend的形式驗證電子郵件
- 13. 驗證電子郵件存在任何域電子郵件Id
- 14. 自定義電子郵件驗證 - 無法設置電子郵件驗證
- 15. EditText上的電子郵件驗證 - Android
- 16. 窗體上的電子郵件驗證
- 17. Nativescript電子郵件驗證模塊
- 18. 電子郵件模板驗證
- 19. 如何發送電子郵件到特定的電子郵件?
- 20. 如何驗證電子郵件與jquery
- 21. 如何使用電子郵件驗證
- 22. 如何驗證電子郵件?
- 23. 如何驗證電子郵件輸入?
- 24. 如何改進電子郵件驗證
- 25. 如何驗證電子郵件貓鼬
- 26. 如何驗證電子郵件地址
- 27. 如何建立驗證電子郵件
- 28. 電子郵件地址驗證,如何?
- 29. 如何驗證電子郵件地址
- 30. 如何驗證unicode電子郵件?
如何電子郵件約Googlemail電子郵件?或使用Gmail的自定義域? – YOU