我想验证Laravel中的“价格”字段。
价格应仅包含不带(。)或(,)的数字,并且也不能以0开头。
例如
2500 //通过
02500 //失败
12.12 //失败
12,12 /失败
我现在的规则如下所示:
'price' => 'required|integer|not_in:0',
它似乎与上面的示例一起工作,但是我不明白。为什么integer
不允许像0123这样的内容以零开头。我只想确保自己的规则符合预期,并且我不会错过任何东西
谢谢
如果您不确定规则“整数”,则可以使用正则表达式表达式验证,如下所示:
'price' => 'required|regex:^[1-9][0-9]+|not_in:0',
我遇到了与您相同的问题,从那时起,我一直将regex验证用于此类要求。此外,如果您想使用js进行正面验证,它还允许您取回相同的正则表达式。
这是允许验证整数的laravel函数:
public function validateInteger($attribute, $value)
{
return filter_var($value, FILTER_VALIDATE_INT) !== false;
}
因此,PHP本身与此行为有关。PHP告诉我们有关FILTER_VALIDATE_INT的事情:
将值验证为整数(可以选择从指定范围开始),并在成功时转换为int。
PHP没有设置有关“ 0”值的其他信息,但是众所周知,此函数不考虑以“ 0”开头的数字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句