如何结合required_with、sometimes与regex实现银行邮编字段验证?
正确的Laravel验证规则配置方案
你需要的验证逻辑可以通过以下规则组合实现:
"bank_info_zip" => [ 'required_with:bank_info_contact_last_name,bank_info_street,bank_info_city', 'sometimes:filled', 'regex:/\d{5}/' ]
规则解释:
required_with:当bank_info_contact_last_name、bank_info_street、bank_info_city任意一个字段存在值时,bank_info_zip会被标记为必填项,确保这三个字段有内容时邮编不能为空。sometimes:filled:仅当bank_info_zip字段被填充(存在非空值)时,才应用后续的regex规则,实现“字段为空时不验证正则”的需求。regex:/\d{5}/:当bank_info_zip有值时,强制验证其必须是5位数字,符合指定的格式要求。
为什么之前的配置有问题?
你之前直接添加sometimes规则但未指定filled参数,导致规则逻辑变成“只要字段存在于请求中就验证正则”——哪怕字段是空字符串,也会触发正则校验,从而出现和预期相反的结果。加上:filled参数后,就能精准控制正则规则只在字段有实际值时生效。
内容的提问来源于stack exchange,提问作者xtay2
相关产品推荐
相关产品推荐

