【发布时间】:2021-06-10 07:51:15
【问题描述】:
我正在尝试为数据成员创建一些验证规则,但我的一个正则表达式遇到了问题。目前我正在使用@"[a-zA-Z']+$",因为我想允许以下字符串:
- 约翰·史密斯(有效)
- 史蒂夫·麦克米伦(有效)
- '''''(无效)
- Hill St'(有效)
这按预期工作,但是当我尝试传递一个只包含特殊字符的字符串时,它允许它。有没有办法可以允许特殊字符',但不允许单独使用?
这是我创建的规则:
RuleFor(h => h.Name)
.Cascade(CascadeMode.Stop)
.NotEmpty().WithMessage("{PropertyName} is required")
.Matches(@"[a-zA-Z']+$").WithMessage("{PropertyName} is invalid");
【问题讨论】:
-
您是否总是在大写字符后跟一个小写字母,然后是单引号?如果是这样,请尝试:
^[A-Z][a-z]'?[a-z]*(?: [A-Z][a-z]'?[a-z]*)*$ -
你可以使用
@"^(?!'$)[a-zA-Z']+$" -
完美运行@WiktorStribiżew
标签: c# regex fluentvalidation