我有一个巴西邮政编码,我必须验证。我正在使用输入掩码使其在JS中更好地查找和验证。
格式为:99999-999
。所以5个数字,一个破折号,然后是3个数字。
然后我有一个表单请求来验证输入。如果我在做任何事情之前转储输入,那就是正确的:"zip" => "80980-980"
。我可以使用正则表达式验证这一点:"zip" => 'regex:/[0-9]{5}-[0-9]{3}/',
,但我不认为它是正确的。
所以我要删除破折号:
$this->merge(['zip' => str_replace('-', '', $this->get('zip')) ]);
如果我转储输入,则再次正确:"zip" => "80980980"
。
这是表单请求:
class AddressCreateRequest extends Request {
public function authorize()
{
return true;
}
public function rules()
{
$this->merge(['zip' => str_replace('-', '', $this->get('zip')) ]);
//dd($this->all());
return [
...
"zip" => "required|digits:8",
//"zip" => 'regex:/[0-9]{5}-[0-9]{3}/',
...
];
}
}
但如果我尝试使用size:8
对此进行验证,即使输入为The zip must be 8 characters.
,我也会这样做:"zip" => "80980980"
。
如果我尝试使用digits:8
,我会The zip must be 8 digits.
,再次输入"zip" => "80980980"
。
我做错了什么?
答案 0 :(得分:0)
大小不起作用beacuse Validator认为您尝试检查一个数字,所以size:8
检查数字8,您可以将变量转换为字符串或
使用正则表达式