2

我目前正在开发一个 Windows 表单应用程序。如何在 Visual Studio (C#) 中为我的密码文本框创建验证,该文本框只允许包含以下内容的文本:

  • 至少一个大写字母
  • 至少一个小写字母
  • 至少一个符号
  • 必须超过 8 个字符
4

3 回答 3

5

由于它是一个 Windows 表单应用程序,因此您可以在代码中进行验证,如下所示:

string password = textBoxPassword.Text;
if (password.Length > 8 && // Must be above 8 characters
    password.Any(char.IsUpper) && //At least one uppercase
    password.Any(char.IsLower) && //At least one lowercase
    password.Any(char.IsSymbol) //At least one symbol
    )
{
    //Valid password
}
else
{
    //Invalid password
}

您可以针对提交按钮(Button_Click 事件)或 TextBox TextChanging 使用此代码。您可以将其提取到如下方法:

private bool IsValidPassword(string password)
{
    return (password.Length > 8 &&
        password.Any(char.IsUpper) &&
        password.Any(char.IsLower) &&
        password.Any(char.IsSymbol)
        );
}

例如,如果您想验证 Button_Click 上的文本,则:

private void button1_Click(object sender, EventArgs e)
{
    if(IsValidPassword(textboxPassword.Text))
    {
        //valid password
    }
    else
    {
        //invalid password

    }

}

编辑:

如果您想要密码中的数字,则可以添加一张额外的支票,例如:

password.Any(char.IsDigit)

检查"!@#"添加检查。

password.Any(char.IsPunctuation)
于 2012-11-30T05:31:45.627 回答
1

它是这样做的:

  • 必须为 8 个字符长:您不需要正则表达式。使用 .Length 属性就足够了。

  • 包括1个大写字母:可以使用[AZ]+正则表达式。如果字符串至少包含一个大写字母,则此正则表达式将返回 true。

  • 1 特殊字符:您可以使用 \W 来匹配任何不是字母或数字的字符,或者,您可以使用类似 [!@#] 的东西来指定特殊字符的自定义列表。请注意,尽管 $、^、( 和 ) 等字符是正则表达式语言中的特殊字符,因此需要像这样对它们进行转义:\$。简而言之,您可以使用 \W。

  • 字母数字字符:使用 \w+ 应该匹配任何字母和数字以及下划线。

查看本教程以获取更多信息。

于 2012-11-30T05:41:37.460 回答
0

如果它是网络,请尝试这个正则表达式-(请在问题中提及)

(                   # Start of group
    (?=.*\d)        #   must contain at least one digit
    (?=.*[A-Z])     #   must contain at least one uppercase character
    (?=.*\W)        #   must contain at least one special symbol
       .            #     match anything with previous condition checking
         {8,8}      #        length at least 8 characters and also maximum of 8
)                   # End of group

在一行中:

((?=.*\d)(?=.*[A-Z])(?=.*\W).{8,8})

资料来源:

于 2012-11-30T05:35:28.963 回答