求一正则表达式,要求如下:
1)至少包含一个数字和字母
2)不能全部为数字和字母
3)除数字和字母外可以包含其他字符
4)长度6~10位
如:  合法:1234abc!@#
            abc!@#123
            a!@#12#3
            123abc#@!a   等
      不合法: 123456
               abcde
               123!@#
               abc!@# 

解决方案 »

  1.   

    123!@#
    abc!@#不明白,这两个为什么不合法?
      

  2.   

    2)不能全部为数字和字母 
    是什么意思,一定要有符号吗?
    asdf456 合法不?
      

  3.   

    他是说可以 我猜全是字母和数字合法
    regex = "[.&&[^0-9]]{6,10}|[.&&[^a-zA-Z]]{6,10}";
    符合以上pattern的都不合法 否则就合法
      

  4.   

    写了个粉没效率的,但是比较容易懂public class Test {    public static void main(String args[]) {
            String[] strs = {"1234abc!@#", "abc!@#123", "a!@#12#3", "123abc#@!a",
                    "123456", "abcde", "123!@#", "abc!@#", "123456a"};
            String regex = "(?=.*[^0-9a-z].*)(?=.*[0-9].*)(?=.*[a-z].*).{6,10}";
            for(String s : strs) {
                System.out.println(s + "  " + s.matches(regex));
            }
        }
    }
      

  5.   

    不过再回头看一下楼主的要求不是很明确。楼主你要注意了,知道的信息越多,正则表达式就可以写得越完善。还不是很明白 123456a  asdf456 这种是否合法!哎,楼主一发好帖就失踪了
      

  6.   

    我觉得按照楼主的意思“除数字和字母外可以包含其他字符”
    那123456a  asdf456 应该是合法的
      

  7.   

    我看了半天,终于研究懂了龙哥的代码
    (?=.*[^0-9a-z].*)(?=.*[0-9].*)(?=.*[a-z].*).{6,10}
    初学者,不好意思我也觉得123456a  asdf456 应该是合法的
    加个问号
    (?=.*[^0-9a-z]?.*)(?=.*[0-9].*)(?=.*[a-z].*).{6,10}
      

  8.   

    不好意思各位下午有事出去的
    如:123456a  asdf456 之类的是合法的信息
    此问题后来已经自己搞定了,谢谢各位