我需要用户名是alpha
或alpha_num
。
Validator::make($data, [
'username' => 'alpha|alpha_num',
]);
答案 0 :(得分:2)
您可以使用以下验证来解决您的问题。
$this->validate($request, ['fieldname' => 'regex:/^[\w-]*$/']);
答案 1 :(得分:1)
为什么不只使用字母数字(因为apha是字母数字的子集)。
当所有字母字符,所有数字字符或字母和数字字符混合使用时,alphanum将验证true。
如果您想排除所有数字的可能性(即,当所有字母字符或字母和数字字符的混合使用时都为true,而不是所有数字时都为true),则可以使用正则表达式
Validator::make($data, [
'username' => 'regex:/^(?![0-9]*$)[a-zA-Z0-9]+$/'
]);
但是要回答有关如何在验证规则中进行“或”的第一个问题,则需要制定自己的自定义规则。
查看有关自定义验证规则的文档 https://laravel.com/docs/5.6/validation#custom-validation-rules
如果要再次使用,最好编写一条规则。如果这是一次性的事情,那么您可以将其放在一个封闭的位置。
作为一个使用闭包的示例,如果您想使用ctype_alpha()测试alpha并使用ctype_alnum()测试字母数字,那么您可以进行OR运算
Validator::make($data, [
'username' => [
function($attribute, $value, $fail) {
if( ctype_alpha($value) || ctype_alnum($value)) {
return $value;
}
return $fail($attribute.' is invalid.');
}
]
]);
答案 2 :(得分:0)
您可以尝试
Validator::make($data, [
'username' => 'alpha_dash',
]);
正在验证的字段可能包含字母数字字符,破折号和下划线。