在注册表单中,用户名应仅包含a-z A-Z 0-9下划线,短划线和点。所以我在AppServiceProvider的boot方法中定义了一个自定义验证器,如下所示;
Validator::extend('valid_username', function ($attribute, $value, $parameters)
{
return preg_match('[a-zA-Z0-9_\-\.]', $value);
}
但验证从未通过。我做错了什么?
答案 0 :(得分:1)
看起来没问题,除了preg_match
在模式的开头和结尾需要/
,你还应该匹配字符串的开头/结尾,并告诉它匹配超过一个字符:
Validator::extend('valid_username', function ($attribute, $value, $parameters)
{
return preg_match('/^[a-zA-Z0-9_\-\.]+$/', $value);
}
您当前的模式只会确认其中一个字符,而不是仅这些字符。