做网站或者开发内部系统时,用户填信息是家常便饭。注册账号要填邮箱,下单得输手机号,留言还得写个名字。但总有人手滑,或者干脆乱填一通,比如把邮箱写成“123@.com”,手机号输成“abc123”。这时候,表单验证就派上用场了,而正则表达式,就是验证背后的“火眼金睛”。
什么是正则表达式?
正则表达式(Regular Expression)是一串描述字符模式的文本规则。它能用来检查某个字符串是否符合特定格式。在前端开发中,我们常用它来即时判断用户输入的内容对不对。
常见的表单字段怎么验?
邮箱验证是最常见的场景之一。一个合格的邮箱大概长这样:username@domain.com。我们可以用下面这个正则简单判断:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
拆开看:开头是字母、数字和一些符号组合,中间有个@,然后是域名部分,最后以点加至少两个字母结尾。虽然不能覆盖所有合法邮箱,但对付大多数情况够用了。
手机号验证在中国基本绕不开。国内手机号通常是11位,以1开头,第二位一般是3到9。简单规则可以这样写:
^1[3-9]\d{9}$
这条规则确保输入的是11位数字,且符合当前主流运营商号段。虽然虚拟运营商多了些新号段,但日常使用问题不大。
密码强度验证也挺实用。比如要求密码必须包含大小写字母、数字、特殊符号,且长度8位以上。可以用这个正则:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
它不是直接匹配字符,而是用“零宽断言”一个个条件去套。虽然看起来复杂,但复制过去改改就能用。
别忘了空格和中文
有时候用户复制内容时会带上前后空格,看着没问题,提交却报错。可以用 trim 预处理,也可以在正则里加上:
^\s*\S+.*$
这表示允许前面有空格,但至少得有一个非空格字符打头。至于中文姓名,通常要求只含汉字,长度2到10个字:
^[\u4e00-\u9fa5]{2,10}$
\u4e00-\u9fa5 是 Unicode 中常用汉字的范围,够用又不会太宽。
实际用法示例
在 JavaScript 里,你可以这样用:
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const input = document.getElementById('email').value;
if (!emailRegex.test(input)) {
alert('邮箱格式不对哦');
}
页面上一提交,立马就知道填得对不对。用户体验好了,后台也少一堆脏数据。
正则不是万能的,比如身份证号虽然能验格式,但没法判断是不是真实存在的号码。但它依然是表单验证中最实用的工具之一。合理使用,能让很多小问题在用户点提交前就被拦下来。