【发布时间】:2012-10-05 16:16:15
【问题描述】:
我只是想知道在字符串中搜索某些条件(具体来说是密码强度)的最佳方法是什么。
到目前为止,我有一个简单的:
if(password.Length <= 7)
{
errorMessage = "Your password must be at least 8 characters.";
}
我希望能够检查大写字母,但我不确定方法或程序是什么。我试过谷歌搜索,搜索网站: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";
}
}
...但这会非常草率,并且必须加倍才能检查至少一个小写字母。我确信有更好的方法来做到这一点,或者至少是我上面显示的方法的简写。
另外,我可能会决定检查特殊字符的密码(在上面的示例中似乎比使用大小写字母更容易,所以我可以将它用于特殊字符,如果我决定让它们成为必要的话) .如果有一种简单(或适当)的方法可以做到这一点,我也很想拥有这些知识。
无论如何,非常感谢您提供的任何帮助。
【问题讨论】:
-
这不是答案,但请确保您了解xkcd.com/936 和xkcd.com/792 我还建议您阅读codinghorror.com/blog/2010/12/… 并在Jeff 的网站上搜索其他相关文章。然后查看正则表达式以验证适当的长度/复杂性。
-
您可能希望通过正则表达式运行密码,而不是一系列
if...then子句。看看这个SO answer。我认为它提供了可以帮助您的正则表达式。 -
@DarinDimitrov 嘿,谢谢你,我没有看到那个链接,因为我不知道搜索正则表达式(虽然,我想这很明显)。我很抱歉,谢谢链接!
-
我非常不同意通过仅引用询问正则表达式的问题来关闭此问题作为重复问题的决定。 OP 没有明确要求正则表达式的答案,有些人可能不会发现使用正则表达式是“最佳”答案,因为不是每个人都能轻松理解正则表达式。
标签: c# string razor passwords webmatrix