我正在使用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个字符。
答案 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)));