✅ 一、命名捕获组(Named Capture Groups)
给捕获结果起名字,更易读、更易维护。
🔹 传统写法(位置识别):
javascript
const result = /(\d{4})-(\d{2})-(\d{2})/.exec("2025-07-31");
console.log(result[1]); // "2025" 年
✅ 增强写法(命名识别):
javascript
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)
匹配一个前面是某模式的值(之前只能用"前瞻")
🔹 正向前瞻(已有的):
javascript
/\d+(?=元)/.exec("价格:88元") // ✅ 匹配 "88",前面是"数字",后面是"元"
✅ 新增:后行断言 (?<=...)
javascript
/(?<=\$)\d+/.exec("$99") // ✅ 匹配 "99",必须前面是 "$"
✅ 场景:
-
精准提取单位前的值(如:金额、百分比)
-
替换、拆分含单位的数据更安全
✅ 三、s 修饰符(dotAll 模式)
让
.
匹配包括换行符在内的任何字符
🔹 默认情况下:
javascript
/./.test("\n") // false
✅ 用 s
修饰符:
javascript
/./s.test("\n") // true
✅ 四、Unicode 转义增强:\p{}
(配合 u
标志)
识别字符的种类,如:数字、标点、汉字、Emoji 等
✅ 示例:匹配所有中文字符
javascript
/\p{Script=Han}/u.test("你") // true
✅ 示例:匹配所有 Emoji 表情
javascript
/\p{Emoji}/u.test("💡") // true