在 PHP 開發中,驗證使用者輸入的電子郵件格式是常見需求。本文深入解析一個經典的 Email 正則表達式,並提供可直接使用的函數範例。
^(w+((-w+)|(.w+))*)+w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$
^:字串開頭(w+((-w+)|(.w+))*):匹配使用者名稱部分,允許字母、數字、底線、連字號與點號組合+:匹配加號(本模式中似為筆誤,實際應為允許特定字元)@:匹配 @ 符號[A-Za-z0-9]+:域名主體,字母數字組合((.|-)[A-Za-z0-9]+)*:子域名部分,可重複出現.:匹配點號[A-Za-z0-9]+:頂級域名$:字串結尾<?php
function isEmail($input = null) {
$email = $input;
// 使用 ereg 已棄用,建議改用 preg_match
if (preg_match('/^[a-zA-Z][a-zA-Z0-9_]{3,9}@[0-9a-zA-Z]{1,10}(\.)(com|cn|com\.cn|net)$/', $email)) {
echo $email . " 符合格式規範";
} else {
echo $email . " 格式錯誤";
}
}
$email = "test@example.com";
isEmail($email);
?>
注意:原文使用的 ereg 函數在 PHP 5.3 後已棄用,現代專案請改用 preg_match 配合 PCRE 正則。上方範例已修正為 preg_match 寫法,並修正正則中的跳脫字元。