在Laravel中实现数字字段自定义校验:要求号码以077/075/078开头
手机号前缀自定义校验方案
校验要求:数字字段输入的号码必须以
077、075、078三者之一作为前缀,总长度为11位纯数字,符合07701231231这类格式,禁止不符合前缀要求的号码提交。
核心校验规则
使用正则表达式完成匹配,规则如下:/^07[578]\d{8}$/
各部分逻辑说明:
^:匹配字符串开始位置,确保前缀从输入的第一位开始生效07[578]:固定匹配前3位为075、077、078中的任意一种\d{8}:匹配后8位为0-9的纯数字$:匹配字符串结束位置,避免输入内容后出现多余的非数字字符或超长内容
常见场景实现示例
1. 原生JavaScript校验函数
function checkValidNumber(input) { const validateReg = /^07[578]\d{8}$/ // 先转换为字符串再校验,避免数字类型传参丢失前置0的问题 return validateReg.test(String(input).trim()) } // 测试用例 checkValidNumber('07701231231') // 返回 true checkValidNumber('07912345678') // 返回 false(前缀不符合) checkValidNumber('07712345') // 返回 false(长度不足) checkValidNumber('077123456789') // 返回 false(长度超出)
2. HTML 表单原生校验
直接在input标签中添加pattern属性即可调用浏览器原生校验:
<!-- 基础用法 --> <input type="text" pattern="^07[578]\d{8}$" required> <!-- 带错误提示用法 --> <input type="text" pattern="^07[578]\d{8}$" title="号码必须以075、077、078开头,总长度为11位纯数字" placeholder="请输入11位号码" required >
3. Vue + Element UI 自定义表单校验
// 自定义校验规则 const validateSpecialPhone = (rule, value, callback) => { const reg = /^07[578]\d{8}$/ if (!value) { callback(new Error('请输入号码')) } else if (!reg.test(value.trim())) { callback(new Error('号码必须以075、077、078开头,总长度为11位纯数字')) } else { callback() } } // 表单规则配置中引用 data() { return { formRules: { phoneNum: [ { validator: validateSpecialPhone, trigger: 'blur' } ] } } }
注意事项
如果允许用户输入时带空格、短横线等分隔符,可以在校验前先过滤所有非数字字符,再执行正则匹配:
// 过滤非数字字符示例 const cleanedValue = value.replace(/\D/g, '')
内容的提问来源于stack exchange,提问作者user16725381
相关产品推荐
相关产品推荐

