我想验证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"开始的数字.

Laravel相关问答推荐

如何判断用户是否已登录Laravel

查询Laravel中的图形

验证判断请求的值是否存在于另一个表 Laravel 9 中

根据路径的开头重定向

Laravel 模型事件:delete() 不会从存储中删除文件

Laravel 如何处理来自浏览器的 PUT 请求?

Laravel API 版本控制文件夹 struct

laravel 控制器中的全局变量

需要 Vagrant 环境或目标机器

在 Laravel 中下载后如何重定向?

如何在 Eloquent 上设置条件关系

Laravel 初学者的良好开端

如何在 Laravel 查询中使用多个 OR、AND 条件

Laravel:自定义或扩展通知 - 数据库模型

反向代理后面的 Laravel 路由

如何在 Laravel 中正确安装软件包?

我在哪里放置可以显示 Flash 消息的 Laravel 4 辅助函数?

如何在 Laravel Mix 中将公共路径更改为包含下划线的内容?

在 laravel 的测试套件中只运行一个单元测试

在我的编辑器中管理上传文件的最佳方式?