可能重复:
强密码正则表达式
需要RegEx密码强度?
我只是想知道在某些条件下搜索字符串的最佳方法是什么(具体的密码强度)可以实现.
到目前为止,我有一个简单的:
if(password.Length <= 7)
{
errorMessage = "Your password must be at least 8 characters.";
}
Run Code Online (Sandbox Code Playgroud)
我希望能够检查大写字母,但我不确定方法或程序是什么.我试过Googling,搜索网站:http: //msdn.microsoft.com,搜索我的C#书的索引(C#Programming 3E,Barbara Doyle),但我似乎找不到任何东西.
我知道我可以尝试这个......:
foreach(char c in password)
{
if(c!='A' || c!='B' || c!='C' || c!='D' ..... || c!='Z')
{
errorMessage = "Your password must contain at least one capital letter";
}
}
Run Code Online (Sandbox Code Playgroud)
...但这将是非常草率的,并且必须加倍才能检查至少一个小写字母.我确信有更好的方法可以做到这一点,或者至少是我上面显示的方法的简写.
此外,我可能决定检查特殊字符的密码(在上面的示例中似乎比使用大写和小写字母更容易做,所以我可以将它用于特殊字符,如果我决定使它们成为必要).如果有一种简单(或适当)的方式,我也很乐意拥有这些知识.
无论如何,非常感谢你们给予任何帮助.
我正在寻找一种优雅的方式,最好是一个简短的linq表达式来计算给定字符串包含多少个字母数字字符.
我现在这样做的"无聊"方式是这样的:
int num = 0;
for (int i = 0; i < password.Length; i++)
{
if (!char.IsLetterOrDigit(password, i))
{
num++;
}
}
if (num < MinRequiredNonAlphanumericCharacters)
return false;
Run Code Online (Sandbox Code Playgroud)
这已经相当短了,但我确信有一些linq魔法,这可以用更短,同样可理解的表达来完成,对吧?