使用者註冊時的帳號、密碼、Email 驗證是系統安全的第一道防線。本文提供三個可直接套用的驗證函式,分別針對「中英數底線帳號」、「6-20 位英數密碼」與「標準 Email 格式」進行嚴格檢核,並說明正則語法細節。
function is_username($username) {
$strlen = strlen($username);
// ^[a-zA-Z0-9_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+$ : 允許 ASCII 127-255 字元
if (!preg_match("/^[a-zA-Z0-9_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+$/", $username)) {
return false;
}
if ($strlen < 2 || $strlen > 20) return false;
return true;
}
正則解析:^ 開頭 [a-zA-Z0-9_\x7f-\xff] 首字元為字母、數字、底線或高位 ASCII;+ 至少一個後續字元;$ 結尾。
function isPWD($value, $minLen = 6, $maxLen = 20) {
// 僅允許英數:/^[a-zA-Z0-9]{$minLen,$maxLen}$/
// 允許特殊符號:/^[\\~!@#$%^&*()\-_=+|{}\[\],.?\/:;'"\d\w]{$minLen,$maxLen}$/
$match = '/^[\\~!@#$%^&*()\-_=+|{}\[\],.?\/:;\'"\d\w]{' . $minLen . ',' . $maxLen . '}$/';
$v = trim($value);
if (empty($v)) return false;
return preg_match($match, $v);
}
function isEmail($value, $match = '/^[\w\d]+[\w\d-.]*@[\w\d-.]+\.[\w\d]{2,10}$/i') {
$v = trim($value);
if (empty($v)) return false;
return preg_match($match, $v);
}
說明:此正則支援子網域、多層域名、2-10 字元頂級域名,適合大多數商業應用。
$username = 'test_user123';
$password = 'Pass1234';
$email = 'user@example.com';
if (is_username($username) && isPWD($password) && isEmail($email)) {
echo "驗證通過,可寫入資料庫";
} else {
echo "資料格式錯誤";
}
將這三個函式納入專案共用函式庫,即可統一前後端驗證標準,降低資料髒污風險。