2011-12-03 20 views
5

我總是發現正則表達式令人頭疼,而且使用谷歌搜索並沒有真正的幫助。我目前使用下面的表達式(的preg_match):/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/正則表達式電子郵件 - 如何在電子郵件中允許加號?

但是,如果我想允許用加號的電子郵件,這顯然是行不通的,如:[email protected]

我需要如何改變我的表情以允許它?在此先感謝您的幫助!

+0

你不應該使用正則表達式來驗證電子郵件地址(你願意妥協的單身人士)請參閱[這個問題](http://stackoverflow.com/questions/201323/what-is-the-best-regular-表達式爲驗證電子郵件地址) –

回答

8

你應該只使用PHP的內置的正則表達式電子郵件驗證,因爲它涵蓋了所有的東西:

filter_var($email, FILTER_VALIDATE_EMAIL) 

(用於實際獸或https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c#L499)查看filter_varFILTER_VALIDATE_EMAIL

+0

Yeap。這是一個很好的答案。 +1 – FailedDev

+0

如果你想知道,'FILTER_VALIDATE_EMAIL'使用正則表達式。你可以在http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c?view=markup 525行看到它 –

+0

謝謝 - 真棒答案!然而,它仍然不驗證[email protected] - 例如,我們說話時升級我的php,所以希望它在最新的穩定版本中得到修復! –

1

嘗試添加\+流入焦炭收集[]

/^[_a-z0-9-]+(.[_a-z0-9-\+]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$/ 
7

wrong正則表達式可以改變到另一個wrong正則表達式:

/^[\w-]+(\.[\w+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/ 

它允許你希望它的+字符。但無論如何,它是wrong

+2

這是我第一次給+1錯誤**回答:) – Bazzz

相關問題