用途:在编写或解释正则表达式、校验输入格式(邮箱、URL、电话、日期、信用卡)、从日志或半结构化文本提取数据、调试匹配失败、处理正则标志(i、g、m、s、u、x)、用捕获组做替换时触发。不适用于完整 HTML/XML 解析(应使用 DOMParser、BeautifulSoup 等解析器)以及更适合机器学习模型的复杂自然语言处理。
主要能力与原则:强调可读性优先于技巧,推荐命名捕获组 (?<name>...) 而非编号组;要求持续测试边界情况(空串、Unicode、超长输入、近似非法输入、对抗性输入);避免嵌套量词 (a+)+ 与重叠分支 (a|ab)+ 造成的灾难性回溯;当正则超过约 80 字符或嵌套超过两层时,考虑改用状态机或解析器。
核心概念:贪婪与懒惰量词(*、+、?、{n,m} 默认贪婪,加 ? 变懒惰);NFA 回溯引擎与 POSIX DFA 引擎差异;字符类与简写 \d、\w、\s 及其否定;锚点 ^、$、\b、\A、\Z;捕获组、非捕获组 (?:...)、分支与反向引用。
常见任务示例:基础邮箱校验 /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/,但安全敏感场景不应仅靠正则,应发送确认链接;URL 校验优先使用 JS 的 URL 构造函数;E.164 电话 /^+[1-9]\d{6,14}$/;用命名组解析日志行;用前后查找提取 $ 后的价格;用 $1 或 $<name> 做替换重排日期。
限制与注意事项:后行断言 (?<=...) 在 Safari 16.4 之前不支持;校验模式必须加 ^ 和 $ 锚点,否则会误判;JS 处理 Unicode 需加 u 标志,否则 emoji 等按两个码元计数;正则不要写在循环内重复编译;不要用正则解析 HTML/XML。首次激活时会检查配套技能,缺失时可用 npx skills add AbsolutelySkilled/AbsolutelySkilled --skill <name> 安装。