2011-09-01 43 views
-2

可能重複:
What is the best regular expression for validating email addresses?
Is there a php library for email address validation?使用正則表達式進行簡單的電子郵件驗證

在我的登記表用戶將增加他的電子郵件,然後收到一封電子郵件,以驗證他的賬戶。然而,我想要一個簡單的電子郵件驗證,我想知道以下是否合適。

<?php 
$email = "[email protected]"; 

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { 

    echo "Valid email address."; 
} 

else { 

    echo "Invalid email address."; 
} 
?> 
+2

你可以使用''。或者使用PHP內置的正則表達式來驗證具有'filter_var($ email,FILTER_VALIDATE_EMAIL)'的電子郵件。你的也許太基本了。 (這兩個例子,你一直在這裏交替。) – mario

+0

你的正則表達式不會像例如[email protected]пример.испытание或mailtest @例え。テスト 見:http://idn.icann.org/E- mail_test – feeela

+0

@尼古拉:問題是downvoted,因爲你沒有搜索一個已經存在的答案。本網站不是一遍又一遍地重複相同的問題和答案。 – fresskoma

回答

24

嘗試:

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    echo 'Valid'; 
} else { 
    echo 'Invalid'; 
} 
2
從一個正則表達式

除此之外,您還可以使用filter_var

if (filter_var('[email protected]', FILTER_VALIDATE_EMAIL)) === false) 
{ 
    echo "Invalid email address."; 
} 
7

你的正則表達式禁止不必要的子域名,如[email protected]。另外,您不應該使用deprecated eregi

而是重塑自己的車輪,使用filter_var

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    echo "Valid email address."; 
} else { 
    echo "Invalid email address."; 
} 
+0

+1。如果您要嘗試驗證電子郵件,這絕對是您應該做的。驗證電子郵件不是一件容易的事情,filter_var的工作和其他任何工作一樣。也就是說,電子郵件驗證並不是絕對必要的,因爲它不會告訴你電子郵件是否真實/正常工作。 – mfonda

0

電子郵件驗證是有點棘手,因爲RFC that specifies the format of email addresses的方式更不受限制,人們認爲。例如,下面都是有效的電子郵件地址:

電子郵件驗證正確的正則表達式似乎看起來像this,我不會去嘗試尋找到;)但是,在使用PHP時,你應該使用filter_var(),像所以:

$valid = filter_var($email, FILTER_VALIDATE_EMAIL); 
# $valid will be TRUE if the email address was valid, 
# otherwise FALSE. 

RFC822似乎包含原始電子郵件格式規範,但我認爲,2822(如上鍊接)僅僅是原來的RFC的修訂/修正。

相關問題