You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fluent Validator中文场景下最小长度验证异常问题求助

Fluent Validator 支持Unicode字符长度验证的解决方案

问题原因

Fluent Validator 默认的 MinimumLength 和 MaximumLength 规则是基于字节数进行校验的,而中文等Unicode字符在UTF-8编码下通常占用3个字节。比如输入2个中文时,字节数已经达到6(满足最小3字节的要求),但实际字符数只有2,这就导致最小长度验证看似失效。

解决方法

方法1:使用正则表达式匹配字符数

通过Matches规则结合正则,直接校验Unicode字符的数量范围:

RuleFor(x => x.FirstName)
    .NotEmpty().WithMessage("Please specify FirstName")
    .Matches(@"^.{3,500}$").WithMessage("FirstName must be between 3 and 500 characters");

如果需要允许换行符,可以添加正则选项:

.Matches(@"^.{3,500}$", RegexOptions.Singleline)

方法2:自定义验证规则

利用C# string.Length 属性(该属性统计的是Unicode字符数,而非字节数),通过Must规则实现自定义校验:

RuleFor(x => x.FirstName)
    .NotEmpty().WithMessage("Please specify FirstName")
    .Must(name => name.Length >= 3 && name.Length <= 500)
    .WithMessage("FirstName must be between 3 and 500 characters");

补充说明

默认的MinimumLength/MaximumLength内部依赖StringLengthValidator,若未指定编码,会默认使用UTF-8字节数判断。上述两种方法直接基于字符数校验,能准确支持中文等Unicode字符的长度验证需求。

内容的提问来源于stack exchange,提问作者NSS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:26:02