正则表达式速查表
字符类到断言到常用模式,一页查全;每条一句人话解释,可筛选。
正则的语法密度极高—— lookahead、惰性量词、命名分组这些词每个都对,但隔一周不用就记不清细节。这份速查按六个分节组织:字符与类、量词、分组与引用、断言、标志、常用模式,每条语法配一句「人话」说明,按语法或用途关键字即可筛选(如搜 lookahead 或 量词)。
常用模式一节收录了邮箱、URL、ISO 日期、IPv4(严格范围)、手机号等高频正则,并注明各自的适用边界——比如邮箱正则只适合初筛,真实验证靠发送邮件;解析 HTML 不该用正则。
贪婪与惰性:量词的默认陷阱
量词默认贪婪:.* 会一路吃到行尾再往回让。提取 HTML 标签内的内容时 <.*> 会吞掉整行,<.*?> 才是逐标签匹配。速查里把两组对照列出——多数「正则怎么多吃了我想要的」问题都出在忘了加 ?。
断言消耗字符吗
不消耗。(?=abc) 只要求「后面是 abc」,匹配位置不前进,所以 (?=.*\d)(?=.*[a-z]) 这类连续断言能对同一位置做多重检查——密码强度校验的惯用法。后行断言 (?<=…) 与之对称,检查「前面」。
常见问题
- 这里的正则是哪个方言?
- 以 JavaScript(ECMAScript)为准,与 PCRE 高度重叠;个别差异(如后行断言的支持范围、\d 的 Unicode 行为)以你运行环境的文档为准。
- 怎么验证速查里的正则?
- 点页面右上角的「在正则测试器中打开」,进入本站正则测试器实时调试,支持高亮与分组捕获展示。
- 为什么邮箱正则不追求完整 RFC 兼容?
- RFC 5322 兼容的正则长达数千字符且几乎没人用。工程实践是:正则做格式初筛,真实有效性靠发送验证邮件确认。