Laravel 验证仅在字段不为空时验证正则表达式

Posted

技术标签:

【中文标题】Laravel 验证仅在字段不为空时验证正则表达式【英文标题】:Laravel Validation Only Validate Regex if Field Not Empty 【发布时间】:2018-10-06 04:18:12 【问题描述】:

我的表单有 youtube_url 字段,它不是必需的.. 但如果用户填写此字段,我必须使用正则表达式验证 url..

'youtube_video' => [
    'regex:/(http:\/\/|https:\/\/|)(www.)?(youtu(be\.com|\.be))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/'
],

正则表达式运行良好,但如果字段未填充(空)则抛出错误。 如何仅在用户填写字段时进行验证。

【问题讨论】:

我认为 regex 之前的 nullable 规则可以解决您的问题。 @SystemGlitch 谢谢,它的工作... Laravel Request Validation Regex without Required的可能重复 【参考方案1】:

你应该使用nullable rule:

$this->validate($request, [
        'youtube_video' => [
            'regex:/(http:\/\/|https:\/\/|)(www.)?(youtu(be\.com|\.be))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/',
            'nullable'
        ],
    ]);

【讨论】:

"nullable" 验证规则正是我想要的,谢谢!

以上是关于Laravel 验证仅在字段不为空时验证正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

当字段不为空时,需要Codeigniter验证显示事件

仅当字段不为空时才进行电子邮件验证

FluentValidation - 仅当值不为空时检查值是表达式

yii2唯一验证器仅当字段不为空时

仅在不为空时比较字段

如果 Laravel 中的值不为空,如何验证输入字段