GUIDE深度 · Deep dive
正则捕获组怎么用?
括号不仅改变优先级,还会捕获匹配内容。替换串里用 $1/$2 引用;只想分组不想捕获时用 (?:...),命名组用 (?<name>...)。
捕获和引用
(\w+)@(\w+\.\w+) 有两个捕获组。
替换串 $1 [at] $2 会保留用户名和域名。
非捕获/命名
(?:...) 只分组不捕获,$ 编号不会变。
(?<user>...) 用 $<user> 引用,可读性更好。
常见问题
$0 是什么?
JavaScript 用 $& 表示整个匹配,不是 $0。
组没匹配到会怎样?
替换成空字符串/undefined;先测试可选组。