关于C#中的一个正则表达式的问题。
我想用C#实现一个简单的验证密码的功能,密码要求至少包含有数字、大写字母、小写字母,长度为4~8个字符之间。我仿照书上的例子,用正则表达式匹配的方法来进行,以下是代码:s...
我想用C#实现一个简单的验证密码的功能,密码要求至少包含有数字、大写字母、小写字母,长度为4~8个字符之间。
我仿照书上的例子,用正则表达式匹配的方法来进行,以下是代码:
string pw = System.Console.ReadLine();
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"^(?=.*\d+)(?=.*[a-z]+)(?=.*[A-Z]+).{4,8}");
if (r.Match(pw).Success)
{
System.Console.WriteLine("\r\nRight");
}
else
{
System.Console.WriteLine("\r\nWrong");
}
System.Console.ReadLine();
比如:
输入:aA1(输出wrong,因为长度小于4)
输入:aaAA(输出wrong,因为没有数字)
我实验了一下,没有问题,基本上实现了,但是有一点:
我输入了12345678Aa,输出结果仍然是right,已经超了8个字符了啊,因该是wrong啊。
我很迷惑,请大家帮忙。 展开
我仿照书上的例子,用正则表达式匹配的方法来进行,以下是代码:
string pw = System.Console.ReadLine();
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"^(?=.*\d+)(?=.*[a-z]+)(?=.*[A-Z]+).{4,8}");
if (r.Match(pw).Success)
{
System.Console.WriteLine("\r\nRight");
}
else
{
System.Console.WriteLine("\r\nWrong");
}
System.Console.ReadLine();
比如:
输入:aA1(输出wrong,因为长度小于4)
输入:aaAA(输出wrong,因为没有数字)
我实验了一下,没有问题,基本上实现了,但是有一点:
我输入了12345678Aa,输出结果仍然是right,已经超了8个字符了啊,因该是wrong啊。
我很迷惑,请大家帮忙。 展开
1个回答
展开全部
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"^(?=.*\d+)(?=.*[a-z]+)(?=.*[A-Z]+).{4,8}");正则表达式有问题 ,应在最后加上$,表示应该以这个模式结束。
应改为:
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"^(?=.*\d+)(?=.*[a-z]+)(?=.*[A-Z]+).{4,8}$");
没加$只要前面的匹配就可以了
正如你前面加"^"表式应该以该模式开始,如果前面不加"^",则asd12345678Aa也应该是right
应改为:
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"^(?=.*\d+)(?=.*[a-z]+)(?=.*[A-Z]+).{4,8}$");
没加$只要前面的匹配就可以了
正如你前面加"^"表式应该以该模式开始,如果前面不加"^",则asd12345678Aa也应该是right
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询