【发布时间】:2016-03-05 21:30:36
【问题描述】:
在我的演示 MVC 应用程序中,我有以下验证规则来验证我的域模型类。
RuleFor(m => m.Password)
.Matches(@"^(?=(\d){2,})(?=([a-z])+)(?=(\.\$\~\&)*)").WithMessage("Password should contain at least 2 digits");
但是密码验证失败。 基本上我想验证密码输入值应该至少包含 2 位数字,至少一个特殊字符 (.$~&) 和至少一个任意顺序的字母表。
它们可以按任何顺序出现。
基本上我应该匹配像
这样的字符串'a2ss1~A33',
'678.&aA88'
但不是
'aaa2sfhdjkf^',
'aass'.
我也刚刚在正则表达式中遇到了前瞻。 我仍然有疑问,为什么我们不能有验证密码字段的规则?
.Matches(@"^((\d){2,})(.*[a-zA-Z])([\.\$\~\&]*)").WithMessage("Password should contain at least 2 digits");
什么时候在正则表达式中使用前瞻,什么时候不使用?
【问题讨论】:
-
请贴出密码无效的密码,应该匹配的密码,不应该匹配的密码,只是将问题归结为实际问题。不需要展示什么效果很好。
标签: c# asp.net regex asp.net-mvc validation