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

PHP 常用驗證正則表達式大全:整數、手機、QQ、URL 一網打盡

     編輯:PHP 相關知識

為什麼需要封裝驗證函式?

專案中反覆出現的表單驗證邏輯,若分散在各處極難維護。將常用正則封裝為獨立函式,不僅提升複用性,更能統一錯誤處理與擴展邏輯。

四大核心驗證函式實作

1. 整數驗證

function isNumber($val) {
    return (bool) preg_match('/^[0-9]+$/', $val);
}

說明:僅允許純數字,不含正負號、小數點。若需支援負整數,改用 /^-?[0-9]+$/。

2. 手機號驗證(中國大陸)

function isPhone($val) {
    // 支援 13-19 開頭的 11 位數字
    return (bool) preg_match('/^1[3-9]\d{9}$/', $val);
}

說明:隨運營商號段擴展,建議定期更新規則或引入專門庫(如 overtrue/phonenumber)。

3. QQ 號驗證

function isQQ($val) {
    // 5-13 位,首位非 0
    return (bool) preg_match('/^[1-9]\d{4,12}$/', $val);
}

4. URL 合法性驗證

function isUrl($url) {
    $pattern = '/^https?:\/\/'                              // 協議
             . '('                                        // 主機部分
             . '(([0-9]{1,3}\.){3}[0-9]{1,3})'            // IP 格式
             . '|'                                        // 或
             . '([0-9a-z_!~\*\'\(\)\-]+\.)*'              // 子域名
             . '([0-9a-z][0-9a-z\-]{0,61})?[0-9a-z]\.'    // 二級域名
             . '[a-z]{2,6})'                              // 頂級域名
             . '(:[0-9]{1,4})?'                           // 端口
             . '((\/\?)|'                                 // 路徑或查詢
             . '(\/[0-9a-zA-Z_!~\*\'\(\)\[\]\.;\?:@&=\+\$,%#\-\/]*)?)'
             . '$/i';
    return (bool) preg_match($pattern, $url);
}

說明:支援 IP、域名、子域名、端口、路徑與查詢字串;i 修飾符忽略大小寫。

使用範例

$phone = '15093691582';
if (isPhone($phone)) {
    echo '手機號格式正確';
} else {
    echo '手機號格式錯誤';
}

最佳實踐建議

  • 優先使用 PHP 內建 filter_var()(如 FILTER_VALIDATE_EMAIL、FILTER_VALIDATE_URL)處理標準格式。
  • 複雜業務規則才自寫正則,並附上完整單元測試。
  • 正則效能敏感場景(如高頻 API)可預編譯或改用狀態機解析。
  • 前端驗證僅為體驗優化,**後端必須二次驗證**。

掌握這些基礎驗證模式,能解決 90% 以上的表單檢核需求。更複雜的身份證、銀行卡、郵編等驗證,建議引入成熟的驗證套件(如 respect/validation)。

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