提交已认证用户更新请求时,自认符合用户名格式仍触发校验异常的成因排查
校验异常触发原因
正则规则匹配失败
你针对username字段配置的正则约束为:@Assert\Regex(pattern="/^[a-z]+$/i", message="this field is not respect the pattern")
该规则的实际匹配要求是:被校验的字符串从开头到结尾仅允许出现大小写英文字母,空格、数字、标点等所有非字母字符都属于不被允许的范围。
你实际提交的username值为najib mar,字符串中间包含一个空格,完全不符合正则的匹配要求,因此触发了第一条“this field is not respect the pattern”的报错。
长度规则超限
你针对username字段配置的长度约束为:@Assert\Length(min=5, max=10, minMessage="ce champ doit avoir au moins {{ limit }} chars",maxMessage="ce champ ne doit pas avoir plus de {{ limit }} chars")
该规则要求username的总字符数必须在5-10个之间,字符数达到11及以上时,就会触发“超过10字符限制”的报错。
你当前提交的带空格的najib mar,通常是因为输入过程中带入了不可见的尾随空格、冗余输入字符,导致实际字符串长度超过了10个字符的上限,因此触发了长度校验报错。
认知偏差说明
你自认符合格式要求的判断,是误将“可包含空格的用户名通用规则”套用到了当前字段的严格校验逻辑上。当前字段的校验逻辑从根本上就不允许空格存在,且对字符长度有明确的上限要求,和你预期的规则并不一致。
内容的提问来源于stack exchange,提问作者wijdane jabboury
相关产品推荐
相关产品推荐

