? 一、命名捕獲組(Named Capture Groups)
給捕獲結果起名字,更易讀、更易維護。
🔹 傳統寫法(位置識別):
const result = /(\d{4})-(\d{2})-(\d{2})/.exec("2025-07-31");
console.log(result[1]); // "2025" 年
? 增強寫法(命名識別):
const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const match = re.exec("2025-07-31");console.log(match.groups.year); // "2025"
console.log(match.groups.month); // "07"
? 使用場景:
日志分析、時間字符串解析
多個捕獲組時不易混淆位置
? 二、后行斷言(Lookbehind)
匹配一個前面是某模式的值(之前只能用“前瞻”)
🔹 正向前瞻(已有的):
/\d+(?=元)/.exec("價格:88元") // ? 匹配 "88",前面是“數字”,后面是“元”
? 新增:后行斷言 (?<=...)
/(?<=\$)\d+/.exec("$99") // ? 匹配 "99",必須前面是 "$"
? 場景:
精準提取單位前的值(如:金額、百分比)
替換、拆分含單位的數據更安全
? 三、s 修飾符(dotAll 模式)
讓
.
匹配包括換行符在內的任何字符
🔹 默認情況下:
/./.test("\n") // false
? 用 s
修飾符:
/./s.test("\n") // true
? 四、Unicode 轉義增強:\p{}
(配合 u
標志)
識別字符的種類,如:數字、標點、漢字、Emoji 等
? 示例:匹配所有中文字符
/\p{Script=Han}/u.test("你") // true
? 示例:匹配所有 Emoji 表情
/\p{Emoji}/u.test("💡") // true