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 之间、之前和之后有任何空格。也就是说,我不想使用其中任何一个:

  1. “查理蜜蜂”
  2. “CharlerBee”
  3. “查勒蜜蜂”

如何实现?

谢谢

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!");