← 资料库 RESOURCE
用正则表达式校验邮箱、电话、邮编等输入的实战技巧与陷阱。

在表单校验中,正则表达式很适合格式规则的输入。要判断整个字符串是否与格式一致,必须用 ^ 和 $ 固定两端。没有锚点的话,即使字符串只有一部分符合也会通过,校验就会被绕过。HTML 的 input pattern 属性也可以直接使用同一个正则表达式。

电话号码、邮编、用户名这类位数和字符种类固定的值,仅靠字符类和量词就足够了。不过如果规则限制得过于狭窄,就会拦掉国际电话、新的邮编体系、有无连字符之类的有效变体。请先了解实际数据的多样性。

不要试图用正则表达式完美校验邮箱。官方规范(RFC 5322)过于复杂,很难用实用的正则表达式再现。只需宽松地确认是否包含 @ 和点就好,真正的有效性应通过发送确认邮件来验证,这才是正道。

浏览器中的正则表达式校验只是为了用户体验(UX),并不是最后一道防线。务必在服务器上再次校验,对于不可信的输入要注意灾难性回溯(ReDoS)(参考资料库的性能一文)。