Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证具有大写、小写和特殊字符的密码?_C#_Asp.net - Fatal编程技术网

C# 如何验证具有大写、小写和特殊字符的密码?

C# 如何验证具有大写、小写和特殊字符的密码?,c#,asp.net,C#,Asp.net,我需要一个验证,用户需要把一个最小值,1个上限,1个下限和1个特殊字符。。。我只是放了一个验证,用户需要至少6个字母或更多 try { string actualPass = this.txtactualPass.Text; string newPass = this.txtnewPass.Text; string reEnterPass = this.txtReEnterPass.Text; if (actualPass == this.Session["pa

我需要一个验证,用户需要把一个最小值,1个上限,1个下限和1个特殊字符。。。我只是放了一个验证,用户需要至少6个字母或更多

try
{
    string actualPass = this.txtactualPass.Text;
    string newPass = this.txtnewPass.Text;
    string reEnterPass = this.txtReEnterPass.Text;

    if (actualPass == this.Session["password"].ToString())
    {
        if (newPass.Length >= 6)
        {

您可以检查密码是否包含数字,而不是特殊字符。可能是特殊字符,您可以使用
char.IsSymbol

if 
(
    newPass.Length >= 6 &&        //if length is >= 6
    newPass.Any(char.IsUpper) &&  //if any character is upper case
    newPass.Any(char.IsSymbol)    //better to have a digit then Symbol
)  
{
    //valid
}

我知道这是一条非常古老的线索,但对于那些寻找类似场景的人来说。我会选择正则表达式

var result = "Password@123";

var expectedPasswordPattern = new Regex(@"^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$");

var isValidPassword = expectedPasswordPattern.IsMatch(result);    

Console.WriteLine(isValidPassword); 

参考

您尝试过什么?另外,我建议在某个库中定义一个密码验证方法,这样当用户订阅或更改密码时,您可以使用相同的方法。可能的重复:我肯定需要转到LINQ:-)每次我看到这样一个好的答案时,它指的是LINQ功能…@Bartdude-它并不总是更快,但绝对更漂亮@user3014210,对于
长度
,您不需要库,它是字符串的属性,对于
任何
,您需要使用System.Linq包含
,我希望您的目标是框架3.5或higher@Scott-未验证。@user3014210,我不确定您为什么在评论中一直标记Scott,您现在想做什么?您是否试图将您的
newPass
与Regex进行比较,以及为什么我的答案中的代码不满足您的条件?