Laravel 5.1创建自定义验证规则

时间:2015-09-15 12:58:24

标签: php validation preg-match laravel-5.1

在注册表单中,用户名应仅包含a-z A-Z 0-9下划线,短划线和点。所以我在AppServiceProvider的boot方法中定义了一个自定义验证器,如下所示;

Validator::extend('valid_username', function ($attribute, $value, $parameters)
            {
                    return preg_match('[a-zA-Z0-9_\-\.]', $value);
            }

但验证从未通过。我做错了什么?

1 个答案:

答案 0 :(得分:1)

看起来没问题,除了preg_match在模式的开头和结尾需要/,你还应该匹配字符串的开头/结尾,并告诉它匹配超过一个字符:

Validator::extend('valid_username', function ($attribute, $value, $parameters)
{
    return preg_match('/^[a-zA-Z0-9_\-\.]+$/', $value);
}

您当前的模式只会确认其中一个字符,而不是这些字符。