2013-04-28 163 views
1

我試圖創建一個註冊表單是隻開放給目前在英國大學就讀的學生,因此需要確保他們進入末端的電子郵件地址在.ac.uk中。正則表達式來大學的電子郵件地址(在.ac.uk結尾)

我有以下的JS功能,但它不工作。

function valUniEmail() 
{ 

var email = document.getElementById('contactFormEmail'); 
if (email.innerHTML.match(^[\w!#$%&'*+/=?^`{|}~-]+(?:\.[\w!#$%&'*+/=?`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?:\.ac\.uk)$`) 
       { 
       document.getElementById('tick').style.display = 'display;' 
       } 
       else 
       { 
       document.getElementById('cross').style.display = 'none;' 
       } 


} 

任何想法爲什麼這可能不工作?

感謝

+1

很抱歉,但我可以直接發送POST請求到服務器來繞過這個安全性。你還必須在你的服務器端腳本中實現它。如果你想這樣做「正確的」,使用這個[正則表達式](http://stackoverflow.com/a/719543/),並使用像'\ .ac \ .uk $'這樣的第二個匹配來檢查是否存在'.ac.uk'結尾。 – HamZa 2013-04-28 12:20:57

+1

沒有訪問服務器,但我沒有處理任何計算機科學的學生,所以不認爲他們會設法繞過它哈哈。雖然,非常感謝您對安全性的看法。 – 2013-04-28 13:27:44

+0

哈哈,沒問題:) – HamZa 2013-04-28 13:49:51

回答

2

你要引用正則表達式與/.../和逃避任何/字符與\/這樣的:

/^[\w!#$%&'*+\/=?^`{|}~-]+(?:\.[\w!#$%&'*+\/=?`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?:ac\.uk)$/ 
+0

你好,謝謝你的回答。該函數現在可以運行,但是無論我輸入什麼電子郵件地址,即使是那些應該通過該條件的電子郵件地址,都會失敗。 – 2013-04-28 12:27:14

+0

@AndyKaufman看起來問題在於,我們在兩次「ac.uk」之前檢查了一個'\ .',所以地址'test @ foo.ac.uk'會通過。我已經解決了這個問題。 – Alexey 2013-04-28 12:34:36

+0

謝謝阿列克謝 - 完美的作品! – 2013-04-28 12:38:50

相關問題