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

PHP 使用者名稱與密碼驗證正則:字母開頭、英數組合、Email 格式完整封裝

     編輯:PHP 相關知識

三大驗證函數

1. Email 格式驗證

function is_email($email) {
    // 簡易版:支援常見格式,嚴格 RFC 5322 需更複雜正則
    return (bool)preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}$/i', $email);
}

2. 使用者名稱:英文字母開頭,長度 4-20,可含英數、底線、點

function is_user_name($user) {
    // ^[a-zA-Z] 開頭為字母
    // ([a-zA-Z0-9]|[._]){3,19} 後續 3-19 碼為英數或 . _
    // $ 結尾
    return (bool)preg_match('/^[a-zA-Z]([a-zA-Z0-9]|[._]){3,19}$/', $user);
}

3. 密碼:僅英數底線,長度 4-20

function is_password($pwd) {
    // \w = [a-zA-Z0-9_]
    return (bool)preg_match('/^\w{4,20}$/', $pwd);
}

正則細節解析

模式含義
^[a-zA-Z]首字元必須為英文字母
([a-zA-Z0-9]|[._])單一字元:英數字或點或底線
{3,19}重複 3 到 19 次(含首字元共 4-20 碼)
^\w{4,20}$全字串僅含 \w,長度 4-20
/iEmail 正則不區分大小寫

現代密碼策略建議(OWASP)

  • 最小長度 8 碼,建議 12+
  • 不限制字元種類(允許特殊符號、空白、Unicode)
  • 禁止常見弱密碼清單(123456、password 等)
  • 採用 password_hash() 儲存,驗證用 password_verify()
  • 前端顯示強度計量器,而非強制複雜度規則

整合驗證類範例

class Validator {
    public static function username($str) {
        return (bool)preg_match('/^[a-zA-Z][a-zA-Z0-9._]{3,19}$/', $str);
    }
    public static function password($str) {
        // 僅做格式檢查,強度策略另行實作
        return (bool)preg_match('/^\S{8,72}$/', $str); // 非空白 8-72 碼
    }
    public static function email($str) {
        return (bool)preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}$/i', $str);
    }
}

// 使用
if (!Validator::username($_POST['username'])) {
    exit('帳號格式錯誤:需字母開頭,4-20 碼英數底線點');
}

將驗證邏輯集中管理,便於維護與單元測試,是表單處理的專業做法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved