/\b(?!\d{3}|[a-z]{3})([0-9a-z])(?!\1\1)[0-9a-z]*\b/gi
我不明白你的第一条的意思
我只能不匹配 1. 3个连续字母或3个连续数字(4个连续也不能匹配)
2. 3个连续相同的字母或数字(其实1已经否定了2)
/***/gi gi是全局不区分大小写匹配 ***是正则表达式
希望我这样写你能从中得到启发
----------------------------------------------------------------
如果想匹配4个及4个以上连续的字母数字 可以用
\b(?!\d{3}|[a-z]{3})([0-9a-z])(?!\1\1)[0-9a-z]*\b|\b(?=\d{4,}|[a-z]{4,})([0-9a-z])(?!\1\1)[0-9a-z]*\b
--------------------------------------------------------------------
String regEx="[A-Z,a-z,0-9,-]*"
boolean result=Pattern.compile(regEx).matcher(str).find();