在Laravel 5中验证数字输入的长度

63

foo.blade.php

<input type="text" name="national-id" />

FooController.php

$rules = [
    'national-id' => 'required|size:10|numeric'
];

national-id字段应该包含10个数字,我实际上希望上面的代码能够验证这一点,但它只会检查national-id是否恰好等于10个数字...

如何验证一个数值字段的长度

3个回答

127

实际上,您不需要使用digits_between规则。您可以使用digits规则,因此根据文档,仅需要使用以下内容:

$rules = [
    'national-id' => 'required|digits:10'
];

没有 numeric 规则,因为 digits 规则也验证了给定的值是否为数字。


17
附注:digits:10 的意思是:“必须恰好为10位数字”(不能多也不能少)。 - jave.web

56

使用 size 函数时,如果参数是数字,则检查该数字是否等于指定大小;如果参数是字符串,则检查字符串中字符的数量。建议在比较数字时使用“==”。

'number' => 'required|numeric|digits_between:1,10'

you don't need to use numeric - yatabani
@yatabani 为什么不呢?添加更多内容,这样答案会更完整。谢谢。 - francisco
请注意,如果您的数字包含小数部分,它将自动失效,您只能使用整数。 - Vyshnia

17

Laravel中对于数值型字段的大小验证将指定其最大整数值。

使用digits_between:

   'national-id' => 'required|digits_between:10,10|numeric' 

这是唯一的方法吗?我认为一定有像“长度”之类的规则可以解决这个问题。 - bobD
工作得很好,但是当用户输入错误的值时,错误信息是这样的(身份证号必须介于10到10位之间)! - bobD
you don't need to use numeric - yatabani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接