ここから盗んだのでクレジットが取れません
using System.Text;
using System.Text.RegularExpressions;
public enum PasswordScore
{
Blank = 0,
VeryWeak = 1,
Weak = 2,
Medium = 3,
Strong = 4,
VeryStrong = 5
}
public class PasswordAdvisor
{
public static PasswordScore CheckStrength(string password)
{
int score = 0;
if (password.Length < 1)
return PasswordScore.Blank;
if (password.Length < 4)
return PasswordScore.VeryWeak;
if (password.Length >= 8)
score++;
if (password.Length >= 12)
score++;
if (Regex.Match(password, @"/\d+/", RegexOptions.ECMAScript).Success)
score++;
if (Regex.Match(password, @"/[a-z]/", RegexOptions.ECMAScript).Success &&
Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success)
score++;
if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success)
score++;
return (PasswordScore)score;
}
}
大文字をチェックするために正規表現を使用していることに注意してください。これは、長さ、大文字と小文字、数字、特殊文字の使用をチェックするため、適切なアプローチのようです。
** アップデート **
質問が終了したことはわかっていますが、VoidKingの説明を追加して、いくつかの概念を理解することができます。
PasswordScoreはCheckStrengthメソッドから返されます。これは、コードで次に行うことの条件として使用できます。
上記のコードを使用する方法のテストされていないデモを次に示します。
String password = "MyDummy_Password"; // Substitute with the user input string
PasswordScore passwordStrengthScore = PasswordAdvisor.CheckStrength(password);
switch (passwordStrengthScore) {
case PasswordScore.Blank:
case PasswordScore.VeryWeak:
case PasswordScore.Weak:
// Show an error message to the user
break;
case PasswordScore.Medium:
case PasswordScore.Strong:
case PasswordScore.VeryStrong:
// Password deemed strong enough, allow user to be added to database etc
break;
}
この場合、列挙型は、パスワードの強度を人間が読める形式のグループに分類する手段として使用されます。コードをクリーンに保ち、コードで何が起こっているかを明確にします。
正規表現の使用に関して、それらの概念と使用方法および使用時期に慣れていない場合は、文字列のパターンをチェックするためのさまざまなシナリオで役立つ可能性があるため、調査を行うことをお勧めします。おそらくここから始めましょう。