首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 郵箱地址正則表達式完整解析與驗證函數

     編輯:PHP 綜合知識

Email 正則表達式深度解析

電子郵件驗證是 Web 開發中的常見需求。本文提供多種正則模式,從基礎到嚴格,並附帶可直接使用的 PHP 驗證函數與提取函數。

常用正則模式對比

模式特點適用場景
/^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$/i基礎驗證,支援多級域名一般表單驗證
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i嚴格模式,符合 RFC 標準,支援 .com.cn 等雙級後綴高安全性需求

完整驗證函數(支援 MX 記錄檢查)

function is_valid_email($email, $test_mx = false) {
    $pattern = "/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i";
    if (preg_match($pattern, $email)) {
        if ($test_mx) {
            list($username, $domain) = explode("@", $email);
            return getmxrr($domain, $mxrecords);
        }
        return true;
    }
    return false;
}

從文本中批量提取 Email

function getEmails($str) {
    $pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
    preg_match_all($pattern, $str, $matches);
    return $matches[0];
}

// 示例
$text = "聯繫我們: admin@example.com, support@test.com.cn";
$emails = getEmails($text);
print_r($emails);

正則關鍵字元說明

  • ^ / $:字串開頭/結尾錨點
  • +:前一字元出現 1 次或多次
  • {2,3}:前一字元出現 2~3 次
  • []:字元集合,如 [a-z0-9] 表示字母或數字
  • \.:轉義點號,匹配實際的「.」
  • i 修飾符:不區分大小寫

使用建議

  1. 前端用 HTML5 type="email" 做初步攔截。
  2. 後端用嚴格正則 + filter_var($email, FILTER_VALIDATE_EMAIL) 雙重驗證。
  3. 關鍵業務(如註冊、找回密碼)建議啟用 MX 記錄檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved