Laravel 验证规则alpha、alpha_dash、alpha_num验证字母无效,中文也会通过问题解决
/**
* Validate that an attribute contains only alphabetic characters.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
protected function validateAlpha($attribute, $value)
{
return is_string($value) && preg_match('/^[\pL\pM]+$/u', $value);
}
源码上可以看出是Unicode
匹配的所以中文也就过去了。
解决办法:
app/Providers/AppServiceProvider.php
在这个文件中
引入
use Illuminate\Support\Facades\Validator;
添加自定义验证规则
public function boot()
{
// 添加自定义验证规则,允许字母和 - _
Validator::extend('allow_letter', function ($attribute, $value, $parameters, $validator) {
return is_string($value) && preg_match('/^[a-zA-Z_-]+$/u', $value);
});
}
上述规则是允许字母和 ‘-’,‘_’ 详细自定义规则方法:http://d.laravel-china.org/docs/5.4/validation#custom-validation-rules