关于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啊。

我很迷惑,请大家帮忙。
展开
 我来答
要与聚0k
2006-08-17 · TA获得超过877个赞
知道小有建树答主
回答量:248
采纳率:100%
帮助的人:118万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式