关于 正则表达式 急 在线等

sss130 2008-05-14 07:34:03
怎样用正则表达式判断 用户密码

字符串至少含有一个大写字母一个数字 位数大于八位
正则理解的不是很好
谢谢 大家
...全文
204 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThirdDimension 2008-05-15
  • 打赏
  • 举报
回复
(?=.*[A-Z])(?=.*[0-9]).{8,}
manbaum 2008-05-15
  • 打赏
  • 举报
回复
(?=.*[A-Z])(?=.*[0-9]).{8,}

(?=.*[A-Z]) 表示至少出现一次大写字母,仅预测不匹配
(?=.*[0-9]) 表示至少出现一次数字,仅预测不匹配
.{8,} 表示匹配8个以上的任何字符

这么解释,还不明白么?楼主的需求是这个么?
lipengfei86 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 lipengfei86 的回复:]
引用 10 楼 jiangnaisong 的回复:
答:不能有小写字母。

貌似lz没说不能用小写字母?难道我理解很有问题?
[/Quote]
我说错话了,帖子没看到最后对不住了啊
lipengfei86 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jiangnaisong 的回复:]
答:不能有小写字母。
[/Quote]
貌似lz没说不能用小写字母?难道我理解很有问题?
云上飞翔 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 anqini 的回复:]
1aaaaa1aaA 这个又不行....呵呵,难为你了
[/Quote]
答:呵呵。不写了。还是20楼的好
lixq2000 2008-05-15
  • 打赏
  • 举报
回复
进来这么多高手,学习学习!
pengdayong 2008-05-14
  • 打赏
  • 举报
回复
public class Test2 {
public static void main(String[] args) {
String str = "aAf12df2ff";
boolean b1 = str.matches("([\\p{Digit}[\\p{Alpha}]]*[A-Z][\\p{Digit}[\\p{Alpha}]]*[0-9][\\p{Digit}[\\p{Alpha}]]*)|([\\p{Digit}[\\p{Alpha}]]*[0-9][\\p{Digit}[\\p{Alpha}]]*[A-Z][\\p{Digit}[\\p{Alpha}]]*)");
if(str.length()>= 8 && b1){
System.out.println(true);
}else{
System.out.println(false);
}
}

}
用了个“|”
pengdayong 2008-05-14
  • 打赏
  • 举报
回复
public class Test2 {
public static void main(String[] args) {
String str = "af12dAf2ff";
boolean b1 = str.matches("([\\p{Digit}[\\p{Alpha}]]*[A-Z][\\p{Digit}[\\p{Alpha}]]*[0-9][\\p{Digit}[\\p{Alpha}]]*)");
boolean b2 = str.matches(("([\\p{Digit}[\\p{Alpha}]]*[0-9][\\p{Digit}[\\p{Alpha}]]*[A-Z][\\p{Digit}[\\p{Alpha}]]*)");

if(str.length()>= 8 && (b1 || b2)){
System.out.println(true);
}else{
System.out.println(false);
}
}

}

正解。
不懂的话可以加QQ:793227792
manbaum 2008-05-14
  • 打赏
  • 举报
回复
(?=.*\u)(?=.*\d).{8,}
如果不行,那:
(?=.*[A-Z])(?=.*[0-9]).{8,}
应该可以了吧。
soita 2008-05-14
  • 打赏
  • 举报
回复
真麻烦啊
anqini 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jiangnaisong 的回复:]
引用 12 楼 anqini 的回复:
引用 10 楼 jiangnaisong 的回复:
答:不能有小写字母。

难道我理解错了?呵呵
我是这么理解的,LZ说至少有个一个大写字母和数字,没说是不能包含小写字母啊,呵呵
比如,aaaaA111111,超过9位,有大写字母,也有数字~

答:谢谢Kimi的提醒。若有小写在内,且必须至少有一个大写字母与数字,则下边的就行了:
String s="222222AAAA21A2AA";
//"22222222AA"
//"22222222AA2"
//"22…
[/Quote]

1aaaaa1aaA 这个又不行....呵呵,难为你了
manbaum 2008-05-14
  • 打赏
  • 举报
回复
(?=.*\u)(?=.*\d).{8,}
这个不行么?
云上飞翔 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 anqini 的回复:]
引用 10 楼 jiangnaisong 的回复:
答:不能有小写字母。

难道我理解错了?呵呵
我是这么理解的,LZ说至少有个一个大写字母和数字,没说是不能包含小写字母啊,呵呵
比如,aaaaA111111,超过9位,有大写字母,也有数字~
[/Quote]
答:谢谢Kimi的提醒。若有小写在内,且必须至少有一个大写字母与数字,则下边的就行了:
String s="222222AAAA21A2AA";
//"22222222AA"
//"22222222AA2"
//"22222222AA22AA"
//"AAAAA2222"
//"AAAAA2222AA"
//"AAAAA2222AA33"
//"999999aaaaa9999AAA"
//"999aaAAAaa"
//"999aaAAAaa99"
//"999aaAAAaa99AA"
//"AAAAAaaaaa99"
//"AAAA999aaa"
//"AAAA9999aaa999"
//"AAAA9999aaa999aaa"
//"aaaAAAAA999"
//"aaaAAAA888aaa"
//"aaa9999aaaaAAA"
//"aaa9999AAAA999"
//"aaa999AAAaaa999"
String reg=
"(?!([A-Za-z]|\\d){1,8}\\b)([a-z]*\\d+[a-z]*[A-Z]+[a-z0-9]*|[a-z]*[A-Z]+\\d+[A-Za-z]*)+";以上测试全为true
anqini 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jiangnaisong 的回复:]
答:不能有小写字母。
[/Quote]
难道我理解错了?呵呵
我是这么理解的,LZ说至少有个一个大写字母和数字,没说是不能包含小写字母啊,呵呵
比如,aaaaA111111,超过9位,有大写字母,也有数字~
awusoft 2008-05-14
  • 打赏
  • 举报
回复
这样的正则表达式不是很好写吧.
云上飞翔 2008-05-14
  • 打赏
  • 举报
回复
答:不能有小写字母。
云上飞翔 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 anqini 的回复:]
引用 7 楼 jiangnaisong 的回复:
答:
String s="222222AAAA21A2AA";
//"22222222AA"
//"22222222AA2"
//"22222222AA22AA"
//"AAAAA2222"
//"AAAAA2222AA"
//"AAAAA2222AA33"
String reg="(?!([A-Z] ¦\\d){1,8}\\b)(\\d+[A-Z]+\\d* ¦[A-Z]+\\d+[A-Z]*)+";
以上测试全为true。

...
"aaaaAAAAAAA"这个过不去,因为你判断的是前面的为数字或者大写~!
[/Quote]
答:Kimi,楼主要求的是必须有至少一个大写字母数字啊
anqini 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiangnaisong 的回复:]
答:
String s="222222AAAA21A2AA";
//"22222222AA"
//"22222222AA2"
//"22222222AA22AA"
//"AAAAA2222"
//"AAAAA2222AA"
//"AAAAA2222AA33"
String reg="(?!([A-Z] ¦\\d){1,8}\\b)(\\d+[A-Z]+\\d* ¦[A-Z]+\\d+[A-Z]*)+";
以上测试全为true。
[/Quote]
...
"aaaaAAAAAAA"这个过不去,因为你判断的是前面的为数字或者大写~!
云上飞翔 2008-05-14
  • 打赏
  • 举报
回复
答:
String s="222222AAAA21A2AA";
//"22222222AA"
//"22222222AA2"
//"22222222AA22AA"
//"AAAAA2222"
//"AAAAA2222AA"
//"AAAAA2222AA33"
String reg="(?!([A-Z]|\\d){1,8}\\b)(\\d+[A-Z]+\\d*|[A-Z]+\\d+[A-Z]*)+";
以上测试全为true
云上飞翔 2008-05-14
  • 打赏
  • 举报
回复
答:如下的就行了
(?!([A-Z] ¦\d){1,8}\b)(\d+[A-Z]+¦[A-z]+\d+)+
加载更多回复(5)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧