C# Regex密码验证组合

C# Regex密码验证组合,c#,regex,C#,Regex,需要一些关于正则表达式的帮助吗?请,我已经完成了我需要做的事情,但只是通过两个步骤,我尝试了多次重新思考,但无法将两个正则表达式变成一个。 有人能给我指一下正确的方向吗?(已经通过了很多教程、构建器等等,但似乎还不够聪明,无法理解!) 这用于密码验证,确保至少有一个字符、一个数字、一个大写字母,并确保第一个和最后一个字符不是数字,密码长度至少为8个字符。这是服务器端版本,但我也将把regex放在客户端 private bool ValidatePassword(string input) {

需要一些关于正则表达式的帮助吗?请,我已经完成了我需要做的事情,但只是通过两个步骤,我尝试了多次重新思考,但无法将两个正则表达式变成一个。 有人能给我指一下正确的方向吗?(已经通过了很多教程、构建器等等,但似乎还不够聪明,无法理解!)

这用于密码验证,确保至少有一个字符、一个数字、一个大写字母,并确保第一个和最后一个字符不是数字,密码长度至少为8个字符。这是服务器端版本,但我也将把regex放在客户端

private bool ValidatePassword(string input)
{
    bool _return;
    var regEx = new Regex(@"^(?=(.*\d))(?=.*[a-z])(?=.*[A-Z])(?!\d).{8,}$");
    _return = regEx.IsMatch(input);

    if (_return)
    {
        regEx = new Regex(@"[^1](\D*)$");
        _return = regEx.IsMatch(input);
    }

    return _return;
}
这样行吗

var regEx = new Regex(@"^(?=(.*\d))(?=.*[a-z])(?=.*[A-Z])(?!\d).{7,}\D$");
此处演示:

尝试以下操作:

^\D{1}((?=(.*\d))(?=.*[a-z])(?=.*[A-Z])(?!\d).{6,})\D{1}$

如果您能告诉我们您当前的代码有什么问题,那将很有帮助。搜索“regex密码强度”,而不是“验证”:那么您的第二个regex只是检查最后一个字符不是数字?在这种情况下,只需将第一个正则表达式的结尾改为:
{7,}\D$
@Alexander:很有帮助,但不能真正回答OP的问题。@Matt这正是他想要的。用一个正则表达式对一个字符串进行几次“检查”。这太完美了——谢谢你,马克,已经兜了几个小时的圈子,你在几分钟内就搞定了我的脑袋!