检查密码包含字母数字和特殊字符

001*_*001 3 c#

如何检查字符串passwordText是否至少包含

  • 1个字母字符
  • 1个号码
  • 1个特殊字符(符号)

Mar*_*ers 14

试试这个:

bool result =
   passwordText.Any(c => char.IsLetter(c)) &&
   passwordText.Any(c => char.IsDigit(c)) &&
   passwordText.Any(c => char.IsSymbol(c));
Run Code Online (Sandbox Code Playgroud)

虽然您可能希望通过"字母字符","数字"和"符号"更具体地说明您的意思,因为这些术语对不同的人意味着不同的东西,并且您不确定这些术语的定义是否符合定义框架使用.

我猜你用字母表示"az"或"A-Z",用数字表示"0-9",用符号表示任何其他可打印的ASCII字符.如果是这样,试试这个:

static bool IsLetter(char c)
{
    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}

static bool IsDigit(char c)
{
    return c >= '0' && c <= '9';
}

static bool IsSymbol(char c)
{
    return c > 32 && c < 127 && !IsDigit(c) && !IsLetter(c);
}

static bool IsValidPassword(string password)
{
    return
       password.Any(c => IsLetter(c)) &&
       password.Any(c => IsDigit(c)) &&
       password.Any(c => IsSymbol(c));
}
Run Code Online (Sandbox Code Playgroud)

如果实际上你的意思是其他东西,那么相应地调整上述方法.