我正在使用laravel验证。我想要输入和存储这样的数据。
111-111-111
。这是演示值。每个部分应该有3个数字。
这是我的验证规则
'id' => 'required|regex:/[0-9]{3}-[0-9]{3}-[0-9]{3}/|unique:info',
前两部分工作完美,但在最后一部分我可以采取超过3个数字。我的意思是如果输入是111-111-11111
则需要输入。
答案 0 :(得分:2)
这很正常。 你需要像搜索引擎一样考虑正则表达式。根据你的规则,你实际上说:
Is there a string that has 3 numbers and then a hyphen (-)
3 numbers and then a hyphen (-)
3 numbers
所以这是真的:
123-112-111
但这也是事实:
111-111-111111111
145-156-1155
123-456-87897
因为所有这些都有3个数字和连字符,3个数字和连字符,3个数字和连字符!
您需要以不同方式限制输入。也许在控制器中有另一个规则,例如:
'id' => 'required|regex:/[0-9]{3}-[0-9]{3}-[0-9]{3}/|max:11|unique:info',
这只是一个基本的例子,我相信你可以找到更好的东西。
同时查看此网站:https://regexr.com/
这实际上是解决您问题的最佳方案:
/[0-9]{3}-[0-9]{3}-[0-9]{3}$/
在你的正则表达式结束时使用$
,你会说:
这是我的字符串的结尾,如果用户在第二个连字符后写入超过3个字符,则不接受输入。