You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:12:04