我有一个必须验证的巴西邮政编码。我正在使用输入掩码使其在 JS 中更好看和验证。这是格式:99999-999
. 所以 5 个数字,一个破折号,然后是 3 个数字。
然后我有一个表单请求来验证输入。如果我在做任何事情之前转储输入,那是正确的: "zip" => "80980-980"
. 我可以使用 regex: 验证这一点"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
I get The zip must be 8 digits.
,则"zip" => "80980980"
再次输入。
我究竟做错了什么?