2011-09-02 53 views
0

我正在通過確保他們有一個特定的大學子域來驗證電子郵件地址,例如,如果用戶說他們出席了牛津大學,我想檢查他們的電子郵件以.ox.ac.uk結尾正則表達式爲大學電子郵件

如果我將'.ox.ac.uk'部分存儲爲變量,我該如何結合這與一個正則表達式來檢查整個電子郵件是有效的,並在變量後綴結束?

非常感謝!

+0

這張支票的價值是什麼,你確定它比喜歡使用他們的'gmail.com'帳戶或任何其他用戶的滋擾因子超過? – tripleee

回答

0

假設你正在使用php。

$ending = '.ox.ac.uk'; 
if(preg_match('/'.preg_quote($ending).'$/i', $email_address)) //... your code 

更多信息:preg_quote()是必要的,這樣字符在具有特殊含義時可以被轉義。在你的情況下,這是點。

編輯:要檢查整個電子郵件是否有效,請參閱其他問題,它被問了很多。只是想幫助你的特殊情況。

+0

非常感謝! 我實際上使用java,但我會去轉換它:) – Jonny

+0

不客氣。我重申了你的問題。 :) – Leif

3

我們使用這個電子郵件方式(從這個regular-expressions.info article派生):

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

你應該能夠將其與你的需要後綴擴展:

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

注意,我更換了TLD部分[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?與您所需的後綴(?:\.ox\.ac\.uk)\.僅用於匹配點)

編輯:one附加說明:如果您使用String#matches(...)Matcher#matches(),則不需要前導^和尾隨$,因爲整個字符串必須與任何匹配。

+0

謝謝。我是否正確地使用Java來逃避\ \ – Jonny

+0

@Jonny是的,我們在db中保留了這個正則表達式,這就是爲什麼在這個例子中沒有\\。在Java字符串中,您可以避開所有反斜槓:) – Thomas

+0

我正在使用 String expression =「^ [\\ w!#$%&'* +/=?^ {{}〜 - ] +( ?:\\ \\ W#$%&'* +/='{|}〜 - !?] +)* @(:?[A-ZA-Z0-9](:[A-ZA -Z0-9 - ] * [A-ZA-Z0-9])\\)+(?:?。牛\\ \\ \\交流UK)$'「; 正如你所建議的那樣,但它似乎並不匹配,因爲它表示它沒有輸入[email protected],它應該成功 – Jonny

相關問題