手机号和邮箱正则表达式怎么写?
整理手机号、邮箱、用户名、数字等常用表单校验正则,并说明不要过度复杂化。
打开正则表达式测试器表单正则要够用,不要过度追求完美
手机号、邮箱、用户名这类表单校验,目标通常是挡掉明显错误,而不是用一个表达式覆盖所有真实世界边界。过于复杂的邮箱正则不但难维护,还可能误伤正常用户。
更稳妥的做法是前端做基础格式校验,后端做最终校验,关键字段再通过短信、邮件或业务流程确认。
- 中国大陆手机号常用:^1[3-9]\d{9}$
- 普通邮箱可用:^[^\s@]+@[^\s@]+\.[^\s@]+$
- 用户名可用:^[a-zA-Z0-9_]{4,20}$
测试正则时要准备反例
只拿正确样本测试正则很容易漏问题。建议同时准备空字符串、带空格、长度不足、特殊符号、中文、边界长度等反例。
在线测试时开启全局匹配和忽略大小写前,要确认业务真的需要。修饰符会影响匹配结果,尤其是 g、m、s。
常见写法的风险
\d 可以匹配数字,但如果没有 ^ 和 $ 限制,字符串中只要包含一段数字就可能通过。比如校验手机号时,必须要求整段字符串匹配。
另一个常见问题是没有转义点号。邮箱里的 . 如果写成普通点号,会匹配任意字符。
常见问题
手机号正则要不要写运营商号段?
一般不用写得太死。号段会变化,使用 ^1[3-9]\d{9}$ 更不容易过期。
邮箱正则越长越好吗?
不是。复杂表达式维护成本高,普通业务更适合基础格式校验加邮件验证。
正则里的 ^ 和 $ 是什么?
^ 表示开头,$ 表示结尾,用来确保整段字符串都符合规则。