一、基礎:怎麼創建正則?

// 方法1:字面量(最常用,簡潔!)
const regex = /pattern/flags; 

// 方法2:構造函數(適合動態拼接)
const regex = new RegExp('pattern', 'flags');

常用標誌(flags)

  • g:全局匹配(找所有匹配項)
  • i:忽略大小寫(如/hello/i能匹配"Hello")
  • m:多行模式(^和$匹配每行開頭/結尾)

✨ 二、超實用方法 & 示例代碼

1️⃣ 驗證郵箱(簡化版,日常夠用)

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("user@domain.com")); // true
console.log(emailRegex.test("invalid-email"));    // false

💡 小貼士:實際項目建議用庫(如validator.js),但面試常考這個!

2️⃣ 替換字符串中的敏感詞

const text = "這個產品太棒了!但價格有點高。";
const cleanText = text.replace(/價格|高/g, "貴");
console.log(cleanText); // "這個產品太棒了!但價格有點貴。"

✨ 重點:g標誌是關鍵!沒有它只會替換第一個匹配項。

3️⃣ 提取數字(比如從文本中抓價格)

const text = "原價¥199,現價¥129!";
const prices = text.match(/\d+/g); // 返回["199", "129"]
console.log(prices.map(Number)); // [199, 129]

4️⃣ 檢測手機號(中國格式)

const phoneRegex = /^1[3-9]\d{9}$/;
console.log(phoneRegex.test("13812345678")); // true
console.log(phoneRegex.test("12345678901")); // false

⚠️ 三、新手必踩的坑(血淚教訓!)

問題

錯誤寫法

正確寫法

為什麼

匹配點號

/a.b/

/a\.b/

點號.是特殊字符,需轉義

全局匹配

str.replace("a", "b")

str.replace(/a/g, "b")

不加g只改第一個

忽略大小寫

/hello/

/hello/i

i標誌


💡 四、為什麼正則這麼重要?

  • 效率爆表:一行代碼搞定複雜字符串操作(比如從日誌裏提取錯誤碼)
  • 前端必備:表單驗證、URL解析、文本處理都離不開它
  • 面試高頻:我去年面試時被問了3次正則,現在寫代碼都成習慣了!

🌟 我的小技巧:用regex101.com在線測試!能實時看到匹配結果,比瞎猜強100倍~


你最近在用正則解決什麼問題呀?
是寫表單驗證卡住了?還是想從爬蟲數據裏提取信息?