JavaScript 数据验证常用正则表达式(RegExp)来匹配字符串格式,判断输入是否符合预期规则,比如邮箱、手机号、密码强度等。核心是用 test() 或 match() 方法结合预定义的正则模式进行校验。
直接在表单提交或输入事件中调用验证函数,返回布尔值即可判断是否合法:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/ —— 确保含一个 @、至少一个点,且前后非空格或 @ 符号/^1[3-9]\d{9}$/ —— 匹配以 1 开头、第二位是 3–9、共 11 位数字^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{6,16}$ —— 使用正向先行断言确保同时含字母和数字/^\d{17}[\dXx]$/ —— 前 17 位为数字,最后一位可为数字或 X/x监听 input 或 blur 事件,动态提示用户:
const input = document.getElementById('email')
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
if (emailRegex.test(input.value)) { input.setCustomValidity('') } else { input.setCustomValidity('邮箱格式不正确') }
input.reportValidity() 触发浏览器原生提示(可选)很多看似简单的写法容易出错,关键点包括:
^ 和 $ 锁定首尾,避免部分匹配(例如不加 $ 时 "abc@def.g" 可能被 @.*\. 错误通过).、+、*、? 在正则中有含义,需写成 \.、\+ 才表示字面量[\u4e00-\u9fa5] 匹配,但注意某些字体或输入法可能产生全角符号,需额外处理i 标志:/abc/i
把常用规则抽象成函数,提升代码可维护性:
示例:function validate(field, type) {
const rules = {
email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
phone: /^1[3-9]\d{9}$/,
password: /^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{6,16}$/
}
return rules[type] ? rules[type].test(field) : false;
}
调用:validate('user@example.com', 'email') → true