2011-03-20 89 views
1

表達我目前使用定期的電子郵件域(沒有基本的電子郵件驗證)

if(preg_match('[email protected](semo\.edu|uni\.uu\.se|)$~', $email)) 

爲域檢查。

但是我只需要檢查電子郵件是否以上述域名結尾。因此,舉例來說,這些都需要被接受:

[email protected] 
[email protected] 
[email protected] 

所以我猜我需要的東西了@之後,但之前的(這大概是「任何隨機字符串或空字符串」任何正則表達式,忍者。在那裏誰可以幫我

回答

2

([^@]*\.)?的作品,如果你已經知道你正在處理一個valid email address說明:?。它要麼空,或任何以句點結束,但不包含符號所以student.cs.semo.edu比賽,因爲。確實是semo.edu,但不是[email protected]。所以:

[email protected]([^@]*\.)?(semo\.edu|uni\.uu\.se)$~ 

請注意,我已從原始正則表達式中刪除了最後一個|

+0

工程就像一個魅力,謝謝! – martnu 2011-03-20 16:31:37

0

您可以使用[a-zA-Z0-9\.]*匹配沒有或多個字符(字母,數字或點):

[email protected][a-zA-Z0-9\.]*(semo\.edu|uni\.uu\.se|)$~

+0

匹配'me @ notreallysemo.edu'。 – 2011-03-20 15:55:02

+0

啊,你說得對。好點子。你的解決方案更加優雅。 +1 – rdamborsky 2011-03-20 16:02:43

0

.*將匹配任何東西。但你並不是真的想要這樣。在域名中有許多字符無效(例如空格)。相反,你想要更多的東西是這樣的:[A-ZA-Z0-9 _]

[\w.]* 

我可能不會有所有允許的字符,但會得到你。這個想法是,你列出了方形剎車片上所有允許的字符,然後使用*來表示它們中沒有一個或更多。

+0

這也與'me @ notreallysemo.edu'匹配。 – 2011-03-20 15:58:32