Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 强密码的正则表达式_C#_Regex_Winforms - Fatal编程技术网

C# 强密码的正则表达式

C# 强密码的正则表达式,c#,regex,winforms,C#,Regex,Winforms,我需要一个正则表达式,其中至少包含以下五个字符类中的两个: 小写字符 大写字符 数字 标点符号 “特殊”字符(例如,@$%^&*()u+\ 124; ~-=\{}[]:“;”/`等) 这是我迄今为止所做的 int upperCount = 0; int lowerCount = 0; int digitCount = 0; int symbolCount = 0; for (int i = 0; i < password.Length; i++) { if (Char.IsU

我需要一个正则表达式,其中至少包含以下五个字符类中的两个:

  • 小写字符
  • 大写字符
  • 数字
  • 标点符号
  • “特殊”字符(例如,
    @$%^&*()u+\ 124; ~-=\
    {}[]:“;”/`等)
这是我迄今为止所做的

int upperCount = 0;
int lowerCount = 0;
int digitCount = 0;
int symbolCount = 0;

for (int i = 0; i < password.Length; i++)
{
    if (Char.IsUpper(password[i]))
        upperCount++;
    else if (Char.IsLetter(password[i]))
        lowerCount++;
    else if (Char.IsDigit(password[i]))
        digitCount++;
    else if (Char.IsSymbol(password[i]))
        symbolCount++;

但是我需要一个带“或”条件的正则表达式。

换句话说,您需要的密码不仅仅包含一个“类”字符。然后您可以使用

^(?![a-z]*$)(?![A-Z]*$)(?!\d*$)(?!\p{P}*$)(?![^a-zA-Z\d\p{P}]*$).{6,}$
说明:

^#字符串的开头
(?![a-z]*$)#断言它不只是包含小写字母
(?![A-Z]*$)#断言它不只是包含大写字母
(?!\d*$)#断言它不仅仅包含数字
(?!\p{p}*$)#断言它不仅仅包含标点符号
(?![^a-zA-Z\d\p{p}]*$)#或上述的倒数
.{6,}#至少匹配六个字符
$#字符串末尾

任何长度要求?当前,<代码> 1A < /代码>将是一个有效的密码。此外,您是否考虑过“代码> E/<代码>或<代码> <代码>或 <代码>字母?像魅力一样。谢谢!
^(?![a-z]*$)(?![A-Z]*$)(?!\d*$)(?!\p{P}*$)(?![^a-zA-Z\d\p{P}]*$).{6,}$