Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.6空字符串的验证正则表达式_Php_Regex_Laravel_Validation - Fatal编程技术网

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

Php Laravel 5.6空字符串的验证正则表达式,php,regex,laravel,validation,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()->

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

$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"
我错过了什么


我只想使用正则表达式。

这是因为它也需要被要求

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

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

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

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

我的错,西蒙是对的,我误读了你的要求“$errors->errors()”比如“MessageBag{#message:[]}”我的错,西蒙是对的,我误读了你的要求“$errors->errors()”比如“MessageBag{#message:[]}”,这很有效!非常感谢。但我还是想知道为什么正则表达式不起作用。它怎么不起作用?它不工作是因为键入0900000000时仍然出错还是因为需要所需的参数?我希望字符串类似于0900000000,但为什么传递空字符串当传递空字符串时,验证通过,因为电话字段不是必需的,所以因为它是空的,所以不会检查正则表达式。只要不是empy字段,它就会检查regex模式。谢谢你的解释。现在我明白了!!真管用!非常感谢。但我还是想知道为什么正则表达式不起作用。它怎么不起作用?它不工作是因为键入0900000000时仍然出错还是因为需要所需的参数?我希望字符串类似于0900000000,但为什么传递空字符串当传递空字符串时,验证通过,因为电话字段不是必需的,所以因为它是空的,所以不会检查正则表达式。只要不是empy字段,它就会检查regex模式。谢谢你的解释。现在我明白了!!