没有被Laravel验证捕获的空格

时间:2016-08-31 20:26:24

标签: php laravel validation laravel-5 laravelcollective

我正在尝试验证密码输入字段,并且验证程序不会捕获空格。密码字段应至少为6个字符,正则表达式应该允许密码中的空格,但不允许在开头或结尾(我已经确认这在验证器之外工作)。

当用户在密码字段中输入1+个空格(但没有其他字符)并提交时,验证者无法捕获它(即“”未被验证者捕获)。

这是我的验证器的样子:

$this->validate($request, [
    'name' => 'required|max:255|alpha',
    'password' => 'regex:/^[^\s]+(\s+[^\s]+)*$/|min:6|confirmed',
]);

3 个答案:

答案 0 :(得分:0)

你的正则表达式有误。在第二个\ s应该去*不+。使用以下一个:

/^[^\s]+(\s*[^\s]+)*$/

如果其他规则与正则表达式一起使用并且它们与管道分开,则验证程序可能无效。所以尝试使用一系列规则:

'password' => array('regex:/^[^\s]+(\s*[^\s]+)*$/', 'min:6', 'confirmed'

答案 1 :(得分:0)

我在测试laravel应用程序中测试了它似乎工作

'password' => 'required|min:6|confirmed|regex:/^[^\s]+(\s+[^\s]+)*$/',

答案 2 :(得分:0)

验证器通过isValidatable()检查输入trimming the input,并确定输入是否为空,尽管它是空的,但是仍然应该验证输入(即输入诸如必需,现在等规则被确定为可以验证,并在验证过程中稍后处理。)

在这种情况下,由于这些implicit rules中没有一个包含在字段验证规则中,因此确定空白输入不可验证,并且从未达到正则表达式或最小规则。

HT到jemaclus进行挖掘并发现这一点。