Web 開發頻繁面臨字串驗證需求:Email 格式、手機號碼、URL、日期、身分證字號等。不使用正則表達式,驗證邏輯冗長且易出錯;引入正則後,複雜驗證化為單行模式匹配,大幅提升開發效率與代碼可維護性。正則表達式已超越語言界限,成為 PHP、JavaScript、VBScript、Java、ASP.NET 等主流 Web 技術的標準能力。
^:字串開頭(多行模式下匹配行首)。$:字串結尾(多行模式下匹配行尾)。\b:單字邊界;\B:非單字邊界。| 符號 | 說明 | 範例 |
|---|---|---|
* | 0 次或多次 | ab* 匹配 a, ab, abb... |
+ | 1 次或多次 | ab+ 匹配 ab, abb... |
? | 0 次或 1 次 | ab?c 匹配 ac, abc |
{n} | 恰好 n 次 | a{2} 匹配 aa |
{n,} | 至少 n 次 | a{2,} 匹配 aa, aaa... |
{m,n} | m 到 n 次 | a{1,3} 匹配 a, aa, aaa |
[xyz] | 字符集合 | [aeiou] 匹配任一母音 |
[^xyz] | 排除字符集合 | [^0-9] 匹配非數字 |
[a-z] | 字符範圍 | [A-Z] 大寫字母 |
\d = [0-9];\D = [^0-9]\s = 空白字符;\S = 非空白\w = [A-Za-z0-9_];\W = 非單字字符(...):捕獲組;(?:...):非捕獲組。|:或運算(cat|dog)。\:轉義元字符(\. 匹配字面點號)。<?php
$email = $_POST['email'] ?? '';
$pattern = '/^([a-z0-9_-])+@([a-z0-9_-])+(\.[a-z0-9_-])+[a-z]{2,3}$/i';
if (preg_match($pattern, $email)) {
echo "您的 E-Mail 通過初步檢查!";
} else {
echo "不是合法的 E-Mail 地址,請重新輸入!";
}
?>
模式解析:^開頭 → 本地部(字母數字底線連字號)→ @ → 域名段(字母數字底線連字號)→ . → 頂級域(2-3位字母) → $結尾。i 修飾符忽略大小寫。
通過範例:webmaster@mail.server.net、hello_2001@88new.cn
拒絕範例:New99@253.com(大寫未開啟 i 修飾符時)、new99@253.comn(頂級域超過 3 字符)
function VerifyWebSiteAddr($strWebSiteAddr) {
return (bool)preg_match(
'/^([_0-9a-z-]+\.)+([0-9a-z-]+\.)+[a-z]{2,3}$/i',
$strWebSiteAddr
);
}
preg_replace 批次格式化電話號碼、身分證字號掩碼。/x 模式)或拆分為多個簡單模式。(a+)+,使用佔有優先量詞 a++ 或原子組。正則表達式是 Web 開發者工具箱中的利刃。掌握核心語法、善用線上測試工具、建立專案共用模式庫,能讓字串驗證與處理事半功倍。