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

正則表達式入門完全指南:語法、元字符與實戰範例

     編輯:關於JSP

正則表達式是文字處理的瑞士刀,廣泛應用於驗證、搜尋、替換、解析等場景。從 Unix 工具(vi、sed、awk)、Perl、PHP、JavaScript 到 Java、C#、Python,幾乎所有語言都內建支援。掌握正則,能以極少代碼解決複雜字串問題。

基礎結構

正則寫在一對定界符之間,如 /pattern/。pattern 由普通字符與元字符組成,元字符賦予模式匹配靈活性。

常用元字符速查

元字符說明範例匹配字串舉例
+前一字符出現 1 次或多次/fo+/fo, foo, fool, football
*前一字符出現 0 次或多次/eg*/e, eg, egg, easy
?前一字符出現 0 次或 1 次/Wil?/Wi, Wil, Wilson
{n,m}前一字符出現 n~m 次/jim{2,6}/jimmy, jimmmmmy
\s單一空白字符(空格、Tab、換行)/\s+/一或多個空白
\S非空白字符/\S+/非空白序列
\d數字 0-9/\d{3}-\d{4}/電話格式 123-4567
\w字母、數字、底線/\w+/單詞
\W非 \w 字符/\W+/標點、空白等
.除換行外任意字符/a.b/aab, acb, a b

定位符:鎖定位置

定位符含義範例匹配
^字串開頭/^hell/hello, hellhound
$字串結尾/ar$/car, bar, ar
\b單詞邊界(開頭或結尾)/\bbom/bomb, bom (開頭)
\B非單詞邊界/man\B/human, woman (結尾)

字符類別與範圍

  • [A-Z] 大寫字母
  • [a-z] 小寫字母
  • [0-9] 數字
  • [a-zA-Z0-9] 英數字
  • ([a-z][A-Z][0-9])+ 群組重複:必須同時包含大小寫與數字

選擇與排除

  • 管道符 |:/to|too|2/ 匹配 "to" 或 "too" 或 "2"
  • 否定字符類別 [^...]:/[^A-C]/ 匹配非 A/B/C 的任意字符
  • 轉義符 \:/Th\*/ 匹配字面 "Th*" 而非 "The"

實戰範例:Email 驗證

// 簡易版:允許常見格式
/^[\w.-]+@[\w.-]+\.\w{2,}$/

// 較嚴格(RFC 5322 簡化)
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$/

JavaScript 中的使用

const emailRegex = /^[\w.-]+@[\w.-]+\.\w{2,}$/;
function validateEmail(email) {
    return emailRegex.test(email);
}
console.log(validateEmail('user@example.com')); // true
console.log(validateEmail('invalid')); // false

進階提示

  • 貪婪 vs 惰性:*、+ 預設貪婪,加 ? 變惰性(如 .*?)。
  • 分組捕獲:() 可供後向引用 \1、$1 或替換使用。
  • 旗標:i 忽略大小寫、g 全域匹配、m 多行模式。
  • 效能:避免過度嵌套量詞(如 (a+)+)導致災難性回溯。

正則表達式看似晦澀,實則邏輯嚴密。建議從常用場景(驗證、擷取、替換)切入,配合線上測試工具(如 regex101.com)練習,漸進掌握這項終身受用的技能。

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