ES9 / ES2018 正则表达式增强

✅ 一、命名捕获组(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