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

前後端郵箱驗證函數大全:JavaScript 正則與 PHP 多種實現對比

     編輯:PHP 相關知識

郵箱驗證是表單處理的基礎環節。本文整理 JavaScript 端三種不同嚴格度的正則,以及 PHP 端內建過濾器、自定義正則、斷言邊界等多種寫法,並說明各自優缺點與適用場景。

JavaScript 實現集錦

1. RFC 5322 完整正則(最嚴格)

function isEmail(email) {
    return /^((([a-z]|\d|[!#$%&'*+\-/=?^_`{|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#$%&'*+\-/=?^_`{|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(email);
}

2. 簡易版(常見場景足夠)

function validateEmail(val) {
    return /^[a-zA-Z0-9._]+[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/.test(val);
}

3. 兼容 IP 域名與端口的版本

function checkEmail(mail) {
    return /^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/.test(mail);
}

PHP 實現集錦

1. 官方推薦:filter_var(PHP 5.2+)

function isEmail($mail) {
    return filter_var($mail, FILTER_VALIDATE_EMAIL);
}

2. 自定義正則 + 斷言邊界

$pattern = '/^([\w._]{2,10})@(\w{1,})\.([a-z]{2,4})$/';
if (preg_match($pattern, $email)) { /* 合法 */ }

// 必須加 ^ $ 確保整串匹配,否則 'abc@def.com.xxx' 也會通過
$strictPattern = '/^([\w._]{2,10})@(\w{1,})\.([a-z]{2,4})$/';

選型決策矩陣

端別方案嚴格度效能維護性建議場景
JavaScriptRFC 5322 正則極高中低(正則極長)核心註冊/登入、合規要求高
簡易正則中高高後台管理、內部工具、快速原型
IP/端口兼容版中高中中特殊業務(允許 IP 域名、端口)
PHPfilter_var中高(官方維護)極高(C 實現)極高(零維護)所有後端驗證首選
自定義正則可控中需自測特殊業務限制(如僅允許特定域名)

核心原則

  1. 格式驗證 ≠ 存在性驗證:唯有發送驗證碼郵件才能確認真實可達。
  2. 前後端規則需一致:避免前端通過、後端攔截(或反向)造成體驗斷層。
  3. 不要過度攔截:user+tag@example.com、user@sub.domain.tld、新頂級域(.app、.dev、.xyz 等)皆為合法。
  4. 國際化郵箱:支援 Unicode 本地部(用戶@例子.中國)需使用 filter_var 或支援 IDN 的正則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved