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

Laravel validation如何实现单个输入框邮箱或数字校验的OR逻辑

Laravel 实现邮箱/手机号OR校验的简洁方案

无需自定义验证函数,以下两种原生实现方式均可直接使用:

  • 方案1:单条正则规则实现(代码最短)
    注意因为正则中包含|符号,验证规则必须用数组格式定义,避免Laravel将其识别为规则分隔符:
    $request->validate([
        'query' => [
            'required',
            'regex:/^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*|\d{8,13})$/'
        ]
    ]);
    
  • 方案2:条件规则实现(可读性更高,便于后续维护)
    基于Laravel原生的条件验证Rule类,逻辑直观:如果输入为纯数字则校验长度,否则校验邮箱格式:
    use Illuminate\Validation\Rule;
    
    $request->validate([
        'query' => [
            'required',
            Rule::when(fn ($value) => ctype_digit($value), ['digits_between:8,13'], ['email'])
        ]
    ]);
    

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:03