欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel价格验证只接受正数,而不仅仅是0 有大用

我想验证Laravel中的“价格”字段.


价格应该只包含没有(.)或(,)的数字,也不能包含0.

例如

2500 //通过

02500 //失败

12.12 //失败

12,12 /失败

我现在的规则如下:


'price' => 'required|integer|not_in:0',

它似乎适用于上面的例子,但我不理解它.为什么整数不允许像0123那样的起始零点.我只是想确保我的规则像预期的那样工作,我不会错过任何东西

谢谢

如果您不确定规则“整数”,可以使用正则表达式验证,如下所示:



'price' => 'required|regex:^[1-9][0-9]+|not_in:0',

我有一些与你相同的问题,从那以后我总是使用正则表达式验证来满足这种要求.此外,如果您想使用js进行前验证,它允许您取回相同的正则表达式.

这是允许验证整数的laravel函数:


public function validateInteger($attribute, $value)
{
    return filter_var($value, FILTER_VALIDATE_INT) !== false;
}

因此,这种行为关注的是PHP本身. PHP告诉我们关于FILTER_VALIDATE_INT的事情:


Validates value as integer, optionally from the specified range, and
converts to int on success.

PHP没有设置关于“0”值的其他信息,但是已知该函数不考虑以“0”开头的数字.


来自  http://www.voidcn.com/article/p-kdedgerg-byx.html


普通分类: