在FluentValidation中检查空白

时间:2014-03-11 21:34:08

标签: c# regex fluentvalidation

我正在使用FluentValidation并尝试创建一个规则,如果字符串中有任何空格,即用户名,则会抛出错误。

我已经对这些SO进行了审核,但似乎无法正常工作,我确定我的语法有点偏差?

What is the Regular Expression For "Not Whitespace and Not a hyphen"What is the Regular Expression For "Not Whitespace and Not a hyphen"

RuleFor(m => m.UserName).NotEmpty().Length(3, 15).Matches(@"/^\S\z/");

RuleFor(m => m.UserName).NotEmpty().Length(3, 15).Matches(@"[^\s]");

这些似乎都不起作用。其他规则不为空,且为3到15个字符。

4 个答案:

答案 0 :(得分:3)

试试这个:

RuleFor(m => m.UserName).NotEmpty().Length(3, 15).Must (u => !string.IsNullOrWhiteSpace(u));

答案 1 :(得分:2)

尝试使用char.IsWhiteSpace

RuleFor(m => m.UserName).NotEmpty().Length(3, 15).Must(userName => !userName.All(c => char.IsWhiteSpace(c)))

答案 2 :(得分:2)

稍微修改原始规则 修改确定,按建议删除分隔符。

RuleFor(m => m.UserName).NotEmpty().Length(3, 15).Matches(@"\A\S+\z");

所有这一切都是强制从头到尾整个字符串中都有非空格。

或者,我猜您可以将它们组合成1匹配,如

RuleFor(m => m.UserName).Matches(@"\A\S{3,15}\z");

答案 3 :(得分:2)

这对我有用 FluentValidation.MVC5 6.4.0

RuleFor(x => x.username).Must(u => !u.Any(x => Char.IsWhiteSpace(x)));