ASP.NET Core Web API - 如何验证用户名之间、前后没有空格
ASP.NET Core Web API - How to validate UserName without whitespace in between, before and after
在我的 ASP.NET Core-6 Web API 中,我正在使用 Fluent Validation,如下所示:
RuleFor(p => p.UserName)
.NotEmpty().WithMessage("{UserName should be not empty. ERROR!");
我不想在 UserName 之间、之前和之后有任何空格。也就是说,我不想使用其中任何一个:
- “查理蜜蜂”
- “CharlerBee”
- “查勒蜜蜂”
如何实现?
谢谢
Fluent Validation 支持通过 predicate 使用 Must
:
提供规则
.Must(s => !s.Contains(' '))
RuleFor(m => m.Token)
.Cascade(CascadeMode.Stop) // stop on first failure
.NotEmpty()
.WithMessage("{UserName should be not empty. ERROR!")
.Must(s => !s.Contains(' ')) // or remove Cascade and add nullability check here
.WithMessage("No spaces!");
我会使用正则表达式来验证 space。
\S
: 匹配任何 non-whitespace 字符
^
: 行首位置
$
: 行尾位置
作为这个正则表达式 ^[\S]+$
RuleFor(m => m.UserName).NotEmpty()
.Matches(@"^[\S]+$")
.WithMessage("{UserName should be not empty. ERROR!");
在我的 ASP.NET Core-6 Web API 中,我正在使用 Fluent Validation,如下所示:
RuleFor(p => p.UserName)
.NotEmpty().WithMessage("{UserName should be not empty. ERROR!");
我不想在 UserName 之间、之前和之后有任何空格。也就是说,我不想使用其中任何一个:
- “查理蜜蜂”
- “CharlerBee”
- “查勒蜜蜂”
如何实现?
谢谢
Fluent Validation 支持通过 predicate 使用 Must
:
.Must(s => !s.Contains(' '))
RuleFor(m => m.Token)
.Cascade(CascadeMode.Stop) // stop on first failure
.NotEmpty()
.WithMessage("{UserName should be not empty. ERROR!")
.Must(s => !s.Contains(' ')) // or remove Cascade and add nullability check here
.WithMessage("No spaces!");
我会使用正则表达式来验证 space。
\S
: 匹配任何 non-whitespace 字符^
: 行首位置$
: 行尾位置
作为这个正则表达式 ^[\S]+$
RuleFor(m => m.UserName).NotEmpty()
.Matches(@"^[\S]+$")
.WithMessage("{UserName should be not empty. ERROR!");