2013-08-27 35 views
0

我想確保只有具有有效.edu電子郵件地址的學生才能註冊。將EDU字符串轉換爲正則表達式

下面是從軌道DOC

validates :email, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create } 

的方式,我對正則表達式相當薄弱。我向Google投擲/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,測試字符串爲[email protected]

我有0個正則表達式的經驗。如果測試字符串是.edu正則表達式是什麼?你可以向我指出我可以找到的信息。

+0

什麼是你的問題?問題是什麼 ?你無法弄清楚什麼是什麼?請嘗試更具體? –

+0

@Sniffer我正在構建一個Rails應用程序,我的所有用戶都是學生,我想確保只有擁有有效.edu電子郵件的學生才能註冊。我需要使用.edu正則表達式驗證我的模型中的電子郵件地址,並且我沒有正則表達式體驗。 – Jngai1297

+0

所以你認爲上面的正則表達式有問題,並希望我們用正則表達式來幫助你驗證僅以'.edu'結尾的電子郵件? –

回答

1

我會實現兩個驗證:

  1. 檢查其是否電子郵件格式

validates :email, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create }

  1. 支票埃杜域

validates :email, :format => { :with => /.edu\Z/i, :on => :create }

+0

我很困惑,因爲我忍受了,所以它驗證了電子郵件格式的正確性?我看到謝謝你 – Jngai1297

0

你可以用一個正則表達式來做到這一點。

以下不是正則表達式工作原理的完整分解,但它可能會幫助您瞭解正在發生的事情。假設電子郵件地址是[email protected]。然後:

  • me比賽/([^@\s]+)/
  • mydomain.比賽/(?:[-a-z0-9]+\.)/
  • example.也匹配/(?:[-a-z0-9]+\.)/
  • mydomain.example.比賽/(?:[-a-z0-9]+\.)+/
  • com比賽/[a-z]{2,}/

所以,你想改變它,以便最後一位,在/[a-z]{2,}/正則表達式,只能匹配edu

/\A([^@\s]+)@((?:[-a-z0-9]+\.)+edu)\Z/i 
相關問題