本课程建立在环视之上
你将学到
数字 十六进制颜色 时间与日期 邮箱 slug 与 IP 地址
步骤 · 14
- 01校验真实世界讲解
- 02整数狩猎
- 03小数狩猎
- 04十六进制颜色狩猎
- 0524 小时制时间狩猎
- 06ISO 日期狩猎
- 07简单邮箱狩猎
- 08URL slug狩猎
- 09IPv4 地址狩猎
- 10美国 ZIP 邮编狩猎
- 11话题标签狩猎
- 12用户名狩猎
- 13高尔夫:短十六进制狩猎
- 14校验完成讲解
用正则校验格式
校验用的正则只回答一个问题:这段文本的格式对不对?注册表单、电子表格和配置文件里满是应该长成某种样子的值,比如时间、日期、颜色代码或邮箱地址。用 ^ 和 $ 把正则包起来,它就必须匹配整个值,多出的空格或字符都通不过检查。
每种格式都由小部件搭成。\d 是一个数字,{4} 要求恰好四个,? 让某部分变成可选的,而 (am|pm) 这样的分组列出允许的选项。数字范围最需要小心:(100|[1-9]?\d) 覆盖 0 到 100,而 \d+ 连 250 也会接受。这个课程的每次狩猎里,你都要写一个校验正则,抓住正确的值,放过那些差一点就对的。
要清楚正则能知道什么。它只检查格式,不检查含义。除非你为每个月份另写分支,否则日期正则会照单全收 31/02/2026;邮箱正则也无法判断邮箱是否真的存在。把正则当作快速的第一道过滤,再让真正的代码去核对日历、发送确认邮件或查找记录。
示例
抓住
- 9:30 am
- 12:05PM
- 07:45 pm
放过
- 13:00 pm
- 9:60 am
- 9:30
12 小时制时间:小时为 1 到 12,前导零可有可无;
i标志让pm和PM都能通过。抓住
- 05/11/2026
- 31/12/1999
- 31/02/2026
放过
- 5/11/2026
- 12/13/2026
- 32/01/2026
日和月都检查了范围,但
31/02/2026照样通过,因为正则只懂格式,不懂日历。抓住
- ABC-1234
- XYZ-0042
放过
- AB-1234
- abc-1234
- ABC-12345
- ABC1234
一个产品编号:恰好三个大写字母、一个连字符和四位数字,锚点会拒绝任何更长的内容。
抓住
- 0%
- 42%
- 100%
放过
- 101%
- 07%
- 42
[1-9]?\d覆盖 0 到 99 且不带前导零,100单独占一个分支。
常见错误
- 忘了锚点。 没有
^和$,匹配四位数字的正则也会接受12345和abc2026,因为它在中间某处找到了匹配。 - 点号没有转义。 在小数或域名里,
.匹配任意字符,所以3x14会混过数字检查;要匹配真正的点号,请写\.。 - 想用一个正则囊括所有特殊情况。 完全符合标准的邮箱正则长达数百个字符;一个简短的正则加一封确认邮件,更容易读懂,也能发现更多真实的错误。
阅读规则:指南中的“常用正则” →反复操练:格式校验 →
延伸阅读:邮箱正则:可直接复制、真正好用的写法 →