首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 5.7中的digit_between:min,max是否接受数字类型中允许的符号?

在 Laravel 5.7 中,digit_between:min,max 验证规则用于确保字段的值是一个数字,并且该数字位于指定的最小值和最大值之间。这个规则主要用于验证整数或浮点数,但它并不接受数字类型中允许的所有符号。

基础概念

  • digit_between:min,max: 这是一个验证规则,用于检查字段的值是否是一个数字,并且该数字在指定的最小值 min 和最大值 max 之间。

优势

  • 简单易用: 可以直接在表单验证中使用,无需额外编写复杂的逻辑。
  • 灵活性: 可以指定数字的范围,适用于多种场景。

类型

  • 整数验证: 当 minmax 都是整数时,验证的是整数范围。
  • 浮点数验证: 当 minmax 包含小数点时,验证的是浮点数范围。

应用场景

  • 表单输入验证: 如用户注册时的年龄输入,确保年龄在合理范围内。
  • 产品价格设置: 确保产品价格在设定的最低价和最高价之间。

遇到的问题及原因

如果你发现 digit_between:min,max 规则不接受某些数字符号(如千位分隔符),这通常是因为默认情况下,Laravel 的验证器会将输入视为普通的字符串,并尝试将其转换为数字进行比较。如果字符串中包含非数字字符(除了小数点),转换可能会失败。

解决方法

如果你需要验证包含千位分隔符的数字,可以先使用 replace 函数去除这些分隔符,然后再应用 digit_between:min,max 规则。例如:

代码语言:txt
复制
use Illuminate\Validation\Rule;

$validator = Validator::make($request->all(), [
    'number' => [
        Rule::required(),
        function ($attribute, $value, $fail) {
            // 移除千位分隔符
            $cleanValue = str_replace(',', '', $value);
            if (!is_numeric($cleanValue)) {
                $fail('The :attribute must be a number.');
            }
        },
        'digit_between:1000,9999' // 假设我们希望数字在1000到9999之间
    ],
]);

在这个例子中,我们首先移除了输入值中的所有逗号,然后检查清理后的值是否为数字,并且是否在指定的范围内。

示例代码

以下是一个完整的控制器方法示例,展示了如何使用自定义验证规则来处理包含千位分隔符的数字:

代码语言:txt
复制
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'number' => [
            Rule::required(),
            function ($attribute, $value, $fail) {
                $cleanValue = str_replace(',', '', $value);
                if (!is_numeric($cleanValue)) {
                    $fail('The :attribute must be a number.');
                }
            },
            'digit_between:1000,9999'
        ],
    ]);

    if ($validator->fails()) {
        return redirect('your-route')
                    ->withErrors($validator)
                    ->withInput();
    }

    // 如果验证通过,继续处理请求...
}

通过这种方式,你可以确保即使输入值包含千位分隔符,也能正确地验证其是否为一个有效的数字,并且是否在指定的范围内。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP 基本数据类型

php $name = "Laravel 精品课"; $author = '学院君'; 字符串类型判断 要判断变量数据类型是否是字符串,可以借助 is_string 函数: if (is_string...PHP_EOL; } 2、数字类型 除了字符串类型之外,PHP 还支持数字类型,数字类型包括两部分:整型和浮点型。...整型 在 PHP 中,整型类型没有位数之分,所有的整型都统归 int/integer 类型,并且不支持无符号整型。...包含了数据类型 int 和整型值,和字符串不同,不再包含数据长度,对于整型而言,也没有必要,因为整型长度是固定的,对于目前最新版的 PHP 7.x 而言,可以通过 PHP_INT_MIN和 PHP_INT_MAX...这里,我们先简单介绍下它的基本定义和使用,还是以「Laravel 精品课」为例,我们可以将是否出版通过布尔类型进行定义: $published = false; var_dump($published)

1.9K10

Laravel Validation 表单验证(二、验证表单请求)

他们会自动被 Laravel 提供的 [服务容器] 自动解析。 所以,验证规则是如何运行的呢?你所需要做的就是在控制器方法中类型提示传入的请求。...这个日期值将会被传递给 PHP 的 strtotime 函数来计算。 between:min,max 验证字段的大小必须在给定的 min 和 max 之间。...字符串、数字、数组和文件的计算方式都使用 size 方法。 boolean 验证的字段必须可以转换为 Boolean 类型。...digits_between:min,max 验证字段的长度必须在给定的 min 和 max 之间。...字符串、数值、数组和文件大小的计算方式与 size 方法进行评估。 max:value 验证中的字段必须小于或等于 value。字符串、数字、数组或是文件大小的计算方式都用 [size]规则。

29.3K10
  • 力扣7-整数反转&力扣8-字符串转换整数 (atoi)

    整数反转 原题链接:https://leetcode.cn/problems/reverse-integer/ 题目描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果...如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。...解题思路 注意题干:假设环境不允许存储 64 位整数(有符号或无符号)。 这句话就是本题的难点。 交换过程 这一过程比较简单 这一过程不难理解,上图只绘制这一过程的前三步。...判断溢出 这一步比较麻烦,但想开了之后也不难 先讨论负数这种情况 int类型的下线是-231=2147483648,这个值也在limits.h中,宏名称为INT_MIN,由于题目不允许使用...64位整数,因此不能用乘法判断是否溢出,因为如果溢出,此时的表达式结果已经超过int类型的范围,已经不是32位整数。

    40130

    力扣7-整数反转&力扣8-字符串转换整数 (atoi)

    整数反转 原题链接:https://leetcode.cn/problems/reverse-integer/ 题目描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。...如果反转后整数超过 32 位的有符号整数的范围 −231,  231 − 1 ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。...解题思路 注意题干:假设环境不允许存储 64 位整数(有符号或无符号)。 这句话就是本题的难点。 交换过程 这一过程比较简单 图片 这一过程不难理解,上图只绘制这一过程的前三步。...判断溢出 这一步比较麻烦,但想开了之后也不难 图片 先讨论负数这种情况 int类型的下线是-231=2147483648,这个值也在limits.h中,宏名称为INT_MIN,由于题目不允许使用64位整数...,因此不能用乘法判断是否溢出,因为如果溢出,此时的表达式结果已经超过int类型的范围,已经不是32位整数。

    35900

    laravel 学习之路 数据库操作 查询数据

    DB facade 为每种类型的查询提供了方法: select,update,insert,delete 和 statement。...如果必须要允许用户通过选择某些列来进行查询,请始终根据允许列的白名单来校验列名。...,那如果想取 testId 不为 1 的数据 就需要传三个参数,第一个参数还是字段名,第二个参数是符号,第三个参数是值 ->where('testId', '', 1)。...获取一列的值 当然业务中有时候需要获取 某个字段 哪一列的值的集合,这个时候就用到了 pluck 方法,pluck 接受 2 个参数 第一个参数是我们要取的字段; 第二个字段是可以选的用来做 key...聚合 查询构造器还提供了各种聚合方法,比如 count, max,min, avg,还有 sum 这些就很简单了 $users = DB::table('test')->count(); $price

    3.2K20

    JS魔法堂:再识Number type

    Brief                                   本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004的原因,但发现自己对计算机的数字表示和运算十分陌生...以下是恶补后的成果: 基础野:细说原码、反码和补码 基础野:细说无符号整数 基础野:细说有符号整数 基础野:细说浮点数   理解JS Number type背后的IEEE 754 64位双精度数值编码后...注意:在strict mode中OctalLiteral是非法的。...(当某运算结果的误差小于Number.EPSILON则认为该结果是可被接受的)               判断是否可接受的函数: function withinErrorMargin (left, right...(Number.isInteger(2.0)返回true) Number.isSaveInteger([value]),value为number类型,且Number.MIN_SAFE_INTEGER

    2.2K50

    前端开发问题集,以及一些踩过的坑,希望对你有帮助

    Number.EPSILON可以用来设置“能够接受的误差范围”。...、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20} 11 可以输入含有^%&',;=?...9x]{18})|([0-9X]{18}))$ 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 密码(以字母开头,长度在6~18...这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?...我们再进行修改: //排序数字、字符串 //by接受两个参数,一个成员名字符串和一个可选的次要比较函数作为参数 //返回一个可以用来对包含该成员的对象数组进行排序的比较函数 //当o[name]和p[name

    58710

    PHP学习—了解篇

    ,由数字、字母、下划线组成变量名 PHP没有创建变量名的命令,变量赋值的过程就是创建的过程 作用域: local(局部):只允许自己语法结构的语句访问(函数内部声明) global(全局...):允许当前PHP程序中所有的语法结构内的语句访问(函数之外声明) 全局变量访问: ​ global关键字用于在函数内访问全局变量,在内部函数中访问全局变量必须在访问前使用global关键字。...> print输出: 数据类型: 字符串: 字符串是字符序列,引号内的文本都属于字符串 整数: 没有小数的数字组合(包括负数) 浮点数: 不是整数的所有数字组合,以及科学计数 布尔逻辑数: true和false...():判断是否为字符串 is_array():判断是否为数组 is_object():判断是否为对象 is_null():判断是否为空 is_resource():判断是否为资源类型 isset():...$MAX."MAX_i=".$MAX_i ; echo ""; echo "Array_MIN:".$MIN."MIN_i=".

    1.1K10

    【C语言】预处理

    被替换成了1000; 1000;是不能通过printf打印的 所以我们得出一个结论:在使用#define定义数字时,尽量不要加入符号 三、#define定义宏 #define机制包括了一个机制,就是允许把参数替换到文本中...,看看它是否包含任何由#define定义的符号,如果是,就重复上述处理过程,也就是再次扫描然后重复上述过程 4、宏参数和#define定义中可以出现其他#define定义的符号,但是宏是不能够递归的...调试 不能调试 可逐句调试 递归 不能递归 可以递归 七、#和## 1、#运算符 #运算符可以将宏的一个参数转换为字符串字面量,它仅允许出现在带参数的宏的替换列表中 简单来说它的功能就是字符串化...,它允许宏定义从分离的文本片段创建标识符,当然这样的连接是要产生一个合法的标识符的,否则其结果就是未定义的,我们可以用这个运算符来写一个类似于宏的函数,这样的函数是可以定义自由定义数据类型的,使用起来是非常方便的...许多C的编译器提供了在命令行中定义符号的能力,用于启动编译过程 在这里我们可以调节数组的大小,或者循环次数的大小等 十一、条件编译 我们平常写代码的时候,我们不清楚所写的代码是否能够实现目标时,我们往往会对某一个某块进行调试

    11710

    分享7个实用的 JavaScript 方法技巧

    1、转换为数字 JavaScript 是一种松散类型语言,这意味着我们不必明确指定变量的类型。JavaScript 还可以根据使用上下文自由地将值转换为类型。...一元 + 运算符 将字符串类型转换为数字的最简洁方法是一元运算符:+ +"42" // 42 一元运算是只有一个操作数的运算。该操作数出现在运算符之前或之后。...该Math.random()函数帮助我们生成一个随机数,然后,我们可以将其转换为我们想要的范围: const randomIntFromInterval = (min, max) => Math.floor...(Math.random() * (max — min + 1) + min); 如果你查看函数的构造方式,还有另一个技巧可以融入到这个技巧中。...6、删除数组重复项 ES6 中引入的 Set 对象类型允许你存储唯一值。与扩展运算符 (...)

    87330

    PS常用.NET类型记录和使用命令

    Max(Double, Double) 返回两个双精度浮点数字中较大的一个。 Max(Int16, Int16) 返回两个 16 位有符号的整数中较大的一个。...Max(Int32, Int32) 返回两个 32 位有符号的整数中较大的一个。 Max(Int64, Int64) 返回两个 64 位有符号的整数中较大的一个。...Max(SByte, SByte) 返回两个 8 位有符号的整数中较大的一个。 Max(Single, Single) 返回两个单精度浮点数字中较大的一个。...Min(Double, Double) 返回两个双精度浮点数字中较小的一个。 Min(Int16, Int16) 返回两个 16 位有符号整数中较小的一个。...Min(SByte, SByte) 返回两个 8 位有符号整数中较小的一个。 Min(Single, Single) 返回两个单精度浮点数字中较小的一个。

    92620

    Java 参数校验(Validator)

    ,并且名字的长度在2位到30位之间 // 如果名字的长度校验不通过,那么提示错误信息 @NotNull @Size(min=2, max=30,message = "请检查名字的长度是否有问题...被注释的元素必须为 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值...@Size(max=, min=) 被注释的元素的大小必须在指定的范围内 @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内 @Past...@NotEmpty 被注释的字符串的必须非空 @Range(min=,max=,message=) 被注释的元素必须在合适的范围内 # 自定义校验注解 有时候,第三方库中并没有我们想要的校验类型...@Data public class User { @NotNull @Size(min=2, max=30,message = "请检查名字的长度是否有问题") private

    1.5K20

    LeetCode 刷题笔记——day 6

    整数反转 难度:简单 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。...假设环境不允许存储 64 位整数(有符号或无符号)。...看完题解才注意到题目:假设环境不允许存储 64 位整数(有符号或无符号)。...这里还涉及到一个小知识点: C++ 中的 min() 函数接收两个相同类型的参数并返回较小值 注意,是相同类型的参数。...在我编辑代码的时候就因为给 min() 的参数为 long 类型的 ans 和 int 类型的 INT_MAX ,虽然都是整数,但确实是不同的类型,这里使用 (long) 对 INT_MAX 做了强制类型转换

    34930

    图解LeetCode——7. 整数反转(难度:中等)

    一、题目 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。...假设环境不允许存储 64 位整数(有符号或无符号)。...: 难点1:采用哪种方式,将低位数字迁移到高位上; 难点2:在拼装最终结果的时候,如何判断其是否越界; 针对难点一,我们即可以采用将整数型转换为字符类型,然后通过堆栈的特性让其达到“反转”的操作。...针对难点二:根据题目要求,不允许存储 64 位整数(有符号或无符号),所以我们在拼装最终结果时,也无法使用long类型了。...由于,Integer.MAX_VALUE = 2147483647,Integer.MIN_VALUE = -2147483648,当我们计算的result超出这个范围的话,那么就会变为负值,即:result

    14830

    django 1.8 官方文档翻译:13-12 验证器

    验证器 编写验证器 验证器是一个可调用的对象,它接受一个值,并在不符合一些规则时抛出ValidationError异常。验证器有助于在不同类型的字段之间重复使用验证逻辑。...验证器如何运行 关于验证器如何在表单中运行,详见表单验证 。关于它们如何在模型中运行,详见 验证对象。...code 验证失败时ValidationError所使用的错误代码。默认为"invalid"。 whitelist 所允许的邮件域名的白名单。...其它不包含点符号的域名不能通过验证,所以你需要按需将它们添加进白名单。...除了父类RegexValidator的可选参数之外,URLValidator接受一个额外的可选属性: schemes 需要验证的URL/URI模式列表。

    1.7K30

    超全 | 只有高手才知道的C语言高效编程与代码优化方法(一)

    例如在一个计算包中,如果需要结果精确到小数点后两位,我们可以将其乘以100,然后尽可能晚的把它转换为浮点型数字。...变量的生命周期分割 由于处理器中寄存器是固定长度的,程序中数字型变量在寄存器中的存储是有一定限制的。...:x>min && xmax可以转换为(unsigned)(x-min)max-min)。...这对于min等于0时更为有益。 优化后的代码如下:max可以转换为(unsigned)(x-min)max-min)。这对于min等于0时更为有益。...N标志表示结果是否是负值,Z标志表示结果是否是0。 C语言中,处理器中的N和Z标志位与下面的指令联系在一起: 有符号关系运算x=0,x==0,x!=0;无符号关系运算x==0,x!

    6.2K21

    LeetCode-面试题67-把字符串转化成整数

    当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。...注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。 在任何情况下,若函数不能进行有效的转换时,请返回 0。...因此返回 INT_MIN (−231) 。 说明: 假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。...int类型会自己触发保护削减数值,这时候就无法通过与MAX_VALUE和MIN_VALUE比大小判断到底是不是越界了。...一种省事的方法是使用long类型的res,但这不符合题意。 我们可以在每一轮数字拼接前判断,当前的值是否超过 2147483647/10,如果超过则下一次拼接10*res必定是越界的。

    19320

    PHP-web框架Laravel-表单和验证

    在Web应用程序中,表单是一种常见的用户交互方式。PHP-web框架Laravel提供了丰富的表单和验证功能,使得开发者可以轻松地创建、处理和验证表单数据。...三、表单验证在接受表单数据之前,需要对表单数据进行验证,以确保其符合要求。在Laravel中,可以使用表单请求(Form Request)来实现表单验证。...return [ 'username' => 'required|min:3|max:20', 'password' => 'required|min:6|max...如果表单验证失败,Laravel会自动将错误信息保存到Session中,并将用户重定向表单页面。如果验证成功,则可以使用$request对象来访问已验证的表单数据。...四、错误处理在Laravel中,可以使用$errors变量来获取表单验证错误信息。如果表单验证失败,Laravel会自动将错误信息保存到$errors变量中,并将其传递给视图。

    2.5K30
    领券