C#でパスワードにX以上の大文字とY以上の数字が含まれていて、文字列全体がZより長いことを確認するにはどうすればよいですか?パスワードにXの大文字とYが含まれていることを確認するにはどうすればよいですか?
ありがとうございました。
C#でパスワードにX以上の大文字とY以上の数字が含まれていて、文字列全体がZより長いことを確認するにはどうすればよいですか?パスワードにXの大文字とYが含まれていることを確認するにはどうすればよいですか?
ありがとうございました。
まず、私はパスワードの強度をよく読んで、ダブルチェックあなたが正しいことをやっていたことを確認するためにポリシーを(私はあなたを伝えることができなかった手)になります。
:
それから私は他の質問を確認したいです。
あなたはLINQのを使用することができます:
:return password.Length >= z
&& password.Where(char.IsUpper).Count() >= x
&& password.Where(char.IsDigit).Count() >= y
;
また、(あなたが将来的にはより複雑な検証をプラグインできるようにするには良い選択肢かもしれません)、正規表現を使用することができます
return password.Length >= z
&& new Regex("[A-Z]").Matches(password).Count >= x
&& new Regex("[0-9]").Matches(password).Count >= y
;
または、それらを組み合わせて一致させることができます。
あなたは、この複数回行う必要があった場合は、クラスを構築することにより、Regex
インスタンスを再利用することができます:
public class PasswordValidator
{
public bool IsValid(string password)
{
return password.Length > MinimumLength
&& uppercaseCharacterMatcher.Matches(password).Count
>= FewestUppercaseCharactersAllowed
&& digitsMatcher.Matches(password).Count >= FewestDigitsAllowed
;
}
public int FewestUppercaseCharactersAllowed { get; set; }
public int FewestDigitsAllowed { get; set; }
public int MinimumLength { get; set; }
private Regex uppercaseCharacterMatcher = new Regex("[A-Z]");
private Regex digitsMatcher = new Regex("[a-z]");
}
var validator = new PasswordValidator()
{
FewestUppercaseCharactersAllowed = x,
FewestDigitsAllowed = y,
MinimumLength = z,
};
return validator.IsValid(password);
+1、1行の回答では、この数字をカウントするために提供されていません。 –
@SaiKalyanAkshinthala:今修正されました。私は私の答えを拡大している間私の間違いを見た: –
詳細な答えをありがとう! Where()メソッドの説明には非常に便利な – SexyMF
大文字と数字カウントする:
string s = "some-password";
int upcaseCount= 0;
int numbersCount= 0;
for (int i = 0; i < s.Length; i++)
{
if (char.IsUpper(s[i])) upcaseCount++;
if (char.IsDigit(s[i])) numbersCount++;
}
をし、長さ
幸運のためs.Length
をチェック!
+1、シンプルだが完璧な答え。 –
ショートやLINQ Where() methodを使用してクリア:
int requiredDigits = 5;
int requiredUppercase = 5;
string password = "SomE TrickY PassworD 12345";
bool isValid = password.Where(Char.IsDigit).Count() >= requiredDigits
&&
password.Where(Char.IsUpper).Count() >= requiredUppercase;
+1です。 –
これはそれを行う必要があります。
public bool CheckPasswordStrength(string password, int x, int y, int z)
{
return password.Length >= z &&
password.Count(c => c.IsUpper(c)) >= x &&
password.Count(c => c.IsDigit(c)) >= y;
}
+1、便利な質問。 –
私はいくつかの標準のpwd検証ルールをRegExで使用しますが、char解析ではcharではありません...この1つを参照してください:http://stackoverflow.com/questions/1152872/creating-a-regex-to-check-for-a -strong-password –