这 5 个正则表达式,帮我节省了 80% 的表单验证时间
分享开发者日常最常用的 5 个正则表达式,涵盖邮箱、手机号、URL、密码强度和身份证号验证。结合在线正则测试工具,让你告别反复调试的痛苦。
作为一名写了多年代码的老兵,我必须承认一个尴尬的事实:我从来没能完整背下来正则表达式的语法。每次遇到需要验证邮箱或手机号的需求,我的第一反应不是自己写,而是打开搜索引擎。为了终结这种低效的循环,我整理了这份"复制即用"的正则清单,并结合 OneKit 的在线测试工具,希望能帮你也从正则的泥潭中解脱出来。
说真的,正则表达式绝对是外星人发明的语言。少写一个反斜杠或者括号,整个逻辑就完全不一样了。我有一次因为正则写错,导致几千个用户的手机号验证失败,被产品经理追着骂了一整天。从那以后,我发誓再也不手写正则了,必须用工具测过才敢上线。
1. 电子邮箱验证
邮箱验证是最常见的场景,但也是最容易踩坑的地方。过于简单的正则(如 `.+@.+`)无法拦截非法格式,而过于复杂的正则(符合 RFC 5322 标准)又可能长达几百个字符,难以维护。下面这个版本在实用性和准确性之间取得了很好的平衡:
适用场景: 用户注册、订阅 Newsletter、找回密码。
注意点: 现代域名后缀越来越多样化(如 .museum, .tech),限制后缀长度为 2-4 位可能不适用于所有新顶级域名,可视情况调整为 `{2,}`。
2. 中国大陆手机号验证
手机号段更新频繁(如广电 192 号段),写死前三位(如 13x, 15x)的做法已经过时。推荐使用宽松验证策略,只要是 1 开头的 11 位数字即可,具体的号码有效性交给短信验证码去判断。
适用场景: 登录注册、身份验证。
优势: 兼容性强,不需要随着运营商发新号段而频繁修改代码。
3. 强密码检测
为了保障账户安全,通常要求密码包含大小写字母、数字和特殊符号,且长度在 8-16 位之间。使用正向预查(Lookahead)可以优雅地实现这一需求:
解释:
`(?=.*[a-z])`: 必须包含小写字母
`(?=.*[A-Z])`: 必须包含大写字母
`(?=.*\d)`: 必须包含数字
`(?=.*[@$!%*?&])`: 必须包含特殊字符
4. URL 网址验证
验证用户输入的个人主页或项目链接。支持 http/https 协议,可选的 www 前缀。
5. 身份证号(18位)
简单的正则只能验证格式(17位数字+1位数字或X),无法验证校验码的合法性。但在前端表单的初步筛选中,这个正则已经足够好用:
包含逻辑:
- 前6位地区码
- 年份限制在 1800-2099
- 月份 01-12,日期 01-31
- 最后一位可能是数字或 X
写在最后
正则表达式虽然强大,但通过阅读代码来理解其含义往往非常困难。建议在项目中将这些正则封装为通用的验证函数,并加上详细的注释。如果你在编写新的正则时遇到困难,不妨试试 OneKit 的 在线正则表达式测试工具,实时查看匹配结果,能帮你省下不少掉头发的时间。