一、基礎:怎麼創建正則?
// 方法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
⚠️ 三、新手必踩的坑(血淚教訓!)
|
問題
|
錯誤寫法
|
正確寫法
|
為什麼
|
|
匹配點號
|
|
|
點號 |
|
全局匹配
|
|
|
不加 |
|
忽略大小寫
|
|
|
用 |
💡 四、為什麼正則這麼重要?
- 效率爆表:一行代碼搞定複雜字符串操作(比如從日誌裏提取錯誤碼)
- 前端必備:表單驗證、URL解析、文本處理都離不開它
- 面試高頻:我去年面試時被問了3次正則,現在寫代碼都成習慣了!
🌟 我的小技巧:用regex101.com在線測試!能實時看到匹配結果,比瞎猜強100倍~
你最近在用正則解決什麼問題呀?
是寫表單驗證卡住了?還是想從爬蟲數據裏提取信息?