首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

问个正则,该怎么解决

2012-05-06 
问个正则要求匹配的字符串必须至少有一个英文字母,一个数字,“@#*”中的一个,测试文本如下:1234@aABC3a#@1A

问个正则
要求匹配的字符串必须至少有一个英文字母,一个数字,“@#*=”中的一个,测试文本如下:
 1234@a
 ABC3a#@
 1Ac@
 ABC 3a#@

只有第二个是匹配的,正则怎么写?
我试写了一下,([a-zA-Z]|\d|[@#\*=])+,这个是不行的,因为第一个也匹配上了。

[解决办法]
String str="ABC3a#@";
char[] characters = str.trim().toCharArray();
int[] flags = new int[];
for(char c:characters){
if(String.valueOf(c).matches("[\\s]")){
System.out.print("不匹配");
return;
}
if(String.valueOf(c).matches("[A-Z]")){
flags[0]=1;
}
if(String.valueOf(c).matches("[@#\\*=]")){
flags[1]=1;
}
if(String.valueOf(c).matches("[a-z]")){
flags[2]=1;
}
if(String.valueOf(c).matches("[0-9]")){
flags[3]=1;
}
}
if(flags[0]==1&&flags[1]==1&&flags[2]==1&&flags[3]==1){
System.out.print("匹配");
}

热点排行