我想验证Laravel中的"价格"字段.
价格应仅包含不带(.)的数字或(,)且不能以0开头.
如
2500 // Pass
02500 // Fails
12.12 // Fails
12,12 / Fails
我现在的规则是这样的:
'price' => 'required|integer|not_in:0',
上面的例子似乎有用,但我不明白.为什么integer
不允许像0123这样以零开始的东西呢.我只是想确保我的规则能正常运行,并且我不会错过什么
谢谢
我想验证Laravel中的"价格"字段.
价格应仅包含不带(.)的数字或(,)且不能以0开头.
如
2500 // Pass
02500 // Fails
12.12 // Fails
12,12 / Fails
我现在的规则是这样的:
'price' => 'required|integer|not_in:0',
上面的例子似乎有用,但我不明白.为什么integer
不允许像0123这样以零开始的东西呢.我只是想确保我的规则能正常运行,并且我不会错过什么
谢谢
如果不确定规则"integer",可以按如下方式使用正则表达式验证:
'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的事情:
将值验证为整数(可选地从指定的范围),然后
PHP没有其他关于"0"值的信息,但是我们知道这个函数不考虑从"0"开始的数字.