Laravel 5.6验证正则表达式为空字符串

时间:2018-09-05 21:13:12

标签: php regex laravel validation

我想用验证器检查电话字符串。上面的代码。

$rules = [
    'phone' => 'regex:/^09\d{8}$/'
];
$messages = [
    'phone.regex' => 'INVALID_PHONE',
];

测试1:

$data = [
    'phone' => 'test'
];
$vali = Validator::make($data, $rules, $messages);

dd($vali->errors()->first()); // I got "INVALID_PHONE". That's I exactly expected.

测试2:

$data = [
    'phone' => ''
];
$vali = Validator::make($data, $rules, $messages);

dd($vali->errors()->first()); // I got "". I expected it is "INVALID_PHONE"

我想念什么?

我只想使用正则表达式。

1 个答案:

答案 0 :(得分:3)

这是因为也需要它;

$rules = [
    'phone' => 'required|regex:/^09\d{8}$/'
];

当您传递一个空字符串时,验证会通过,因为电话字段不是必需的,所以因为它为空,所以它不会检查正则表达式。一旦它不是一个空字段,它将检查正则表达式模式