gpt4 book ai didi

c# - 如何验证密码包含X个大写字母和Y个数字?

转载 作者:太空狗 更新时间:2023-10-29 18:13:43 25 4
gpt4 key购买 nike

如何在 C# 中验证密码至少包含 X 个大写字母和至少 Y 个数字,并且整个字符串比 Z 长?

谢谢。

最佳答案

密码强度:

首先,我会阅读密码强度,并仔细检查您的政策以确保您做的事情是正确的(我不能马上告诉您):

然后我会检查其他问题:

然后我开始做正事。

实现:

您可以使用 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);

关于c# - 如何验证密码包含X个大写字母和Y个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com