求一正则!

Java后台判断如果一个字符串长度小于6或者是纯数字或者是纯字母的时候renturn false,其他情况return true;

[code="java"]import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
public static boolean filterStr(String str) {
if (str.length() < 6)
return false;
Pattern pattern = Pattern.compile("^([0-9]+)|([a-zA-z]+)$");
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
return true;
}
return false;
}

public static void main(String[] args) {
    System.out.println(filterStr("aaa"));
    System.out.println(filterStr("aaaaaa"));
    System.out.println(filterStr("232341345"));
    System.out.println(filterStr("aaa1aaa"));
}

}[/code]

输出:
false
true
true
false

试试:
^((\d{,5})||([a-zA-Z]{,5}))$

逻辑上有点问题,改下

[code="java"]import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Test{

public static boolean filterStr(String str) {

if (str.length() < 6)

return false;

Pattern pattern = Pattern.compile("^([0-9]+)|([a-zA-z]+)$");

Matcher matcher = pattern.matcher(str);

if (matcher.matches()) {

return false;

}

return true;

}

public static void main(String[] args) {  
    System.out.println(filterStr("aaa"));  
    System.out.println(filterStr("aaaaaa"));  
    System.out.println(filterStr("232341345"));  
    System.out.println(filterStr("aaa1aaa"));  
}  

} [/code]
false
false
false
true

[code="java"]import java.util.regex.Pattern;

public class T {

public static void main(String args[]) {

    String regx = "^((\\d{0,5})|([a-zA-Z]{0,5}))$";
    Pattern pattern = Pattern.compile(regx);
    System.out.println(pattern.matcher("12345").matches());
    System.out.println(pattern.matcher("ababd").matches());
    System.out.println(pattern.matcher("1234567").matches());
    System.out.println(pattern.matcher("badsewewewewew").matches());
    System.out.println(pattern.matcher("123we").matches());
}

}[/code]
输出:
[quote]
true
true
false
false
false
[/quote]

我理解反了。。。。

将结果取反就可以了。。。

[code="java"]import java.util.regex.Pattern;

public class T {
private static Pattern pattern;
static {
String regx = "^((\d{0,5})|([a-zA-Z]{0,5}))$";
pattern = Pattern.compile(regx);
}

public static boolean checkString(String input){
    return !pattern.matcher(input).matches();
}

public static void main(String args[]) {

  System.out.println("12345 --> "+T.checkString("12345"));
  System.out.println("abcde --> "+T.checkString("abcde"));
  System.out.println("123 --> "+T.checkString("123"));
  System.out.println("abcdefg --> "+T.checkString("abcdefg"));
  System.out.println("12e --> "+T.checkString("12e"));
}

}[/code]

[quote="输出"]
12345 --> false
abcde --> false
123 --> false
abcdefg --> true
12e --> true
[/quote]