【问题标题】:TextBox Validation #2文本框验证 #2
【发布时间】:2012-11-18 08:06:30
【问题描述】:

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

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

【问题讨论】:

  • Windows 窗体?网络表格?什么?
  • 我正在处理 Windows 窗体

标签: c# winforms validation passwords


【解决方案1】:

由于它是一个 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)

【讨论】:

  • 为什么不向他展示如何使用适当的事件进行验证呢? TextChanging 什么的。
  • 为什么“!@#”不被算作一个符号?我怎样才能使它成为一个符号?
  • @Derek,它们不是符号,请参阅:msdn.microsoft.com/en-us/library/00k2wda1.aspxValid symbols are members of the following categories in UnicodeCategory: MathSymbol, CurrencySymbol, ModifierSymbol, and OtherSymbol.
  • @Derek,您可以添加检查是否为标点符号password.Any(char.IsPunctuation)
  • 仍然无法检测到!@#,标点符号是“,.”根据我的尝试.. 还有其他建议吗?
【解决方案2】:

它是这样做的:

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

  • 包括 1 个大写字母:您可以使用 [A-Z]+ 正则 表达。如果字符串至少包含一个大写字母, 此正则表达式将产生 true。

  • 1 特殊字符:您可以使用匹配任何字符的 \W 不是字母或数字的字符,否则,您可以使用 像这样 [!@#] 来指定特殊的自定义列表 人物。请注意,$、^、( 和 ) 等字符是 正则表达式语言中的特殊字符,所以它们需要 像这样逃脱:\$。简而言之,您可以使用 \W。

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

查看本教程了解更多信息。

【讨论】:

    【解决方案3】:

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

    (                   # 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})
    

    来源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2011-09-18
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多