java或者正则表达式如何判断字符串不是相同数字或者字母?不能全是连续数字?(最好是java)

1.不能全是相同的数字或者字母(如:000000、111111、222222、333333等等)
2.不能是连续数字(如:123456、12345678、87654321等等)

[code="java"]
//顺序表
static String orderStr = "";
static {
for (int i = 33; i < 127; i++) {
orderStr += Character.toChars(i)[0];
}
}
//判断是否有顺序
public static boolean isOrder(String str) {
if (!str.matches("((\d)|([a-z])|([A-Z]))+")) {
return false;
}
return orderStr.contains(str);
}
//判断是否相同
public static boolean isSame(String str) {
String regex = str.substring(0, 1) + "{" + str.length() + "}";
return str.matches(regex);
}
[/code]

[code="java"]稍微写了下 有点粗糙
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

public class demo {
/**
* 判断是否是由同一字符构成的,true代表由同一字符构成的 false反之
/
public static boolean isSameSymbol(String s){
boolean flag=false;
//当s为空字符串或者null,认为不是由同一字符构成的
if(StringUtils.isEmpty(s)){
return flag;
}
//当只有一个字符的时候,认为由同一字符构成
if(1==s.length()){
flag=true;
return flag;
}
char chacter=s.charAt(0);
for(int i=1;i<=s.length()-1;i++){
if(chacter!=s.charAt(i)){
flag=false;
return flag;
}
}
flag=true;
return flag;
}
/
*
* 判断是否有顺序 true代表有顺序 false反之
*/
public static boolean isOrdered(String s){
boolean flag=false;
//当s为空字符串或者null,认为不是由同一字符构成的
if(StringUtils.isEmpty(s)){
return flag;
}
//当只有一个字符的时候,认为由同一字符构成
if(1==s.length()){
flag=true;
return flag;
}
List temp1= new ArrayList();
List temp2= new ArrayList();
for(int i=0;i<s.length();i++){
temp1.add(Integer.valueOf(s.substring(i,i+1)));
}
for(int i=0;i<s.length();i++){
temp2.add(Integer.valueOf(s.substring(i,i+1)));
}
Collections.sort(temp1);
StringBuffer orderedAsc=new StringBuffer();
for(Integer i:temp1){
orderedAsc.append(i);
}
Collections.sort(temp2);
Collections.reverse(temp2);
StringBuffer orderedDec=new StringBuffer();
for(Integer i:temp2){
orderedDec.append(i);
}
if(s.equals(orderedDec.substring(0))||s.equals(orderedAsc.substring(0))){
flag=true;
return flag;
}
return flag;
}
public static void main(String[] args) {
System.out.println(isSameSymbol("ssss"));
System.out.println(isSameSymbol("saaa"));
System.out.println(isOrdered("12345"));
System.out.println(isOrdered("54321"));
System.out.println(isOrdered("54451"));
}
}
[/code]

1.不能全是相同的数字或者字母 正则倒是好处理:
boolean unmatch = !"wwwww".matches("(\w)(\1)+");

第2点正则不好处理