正則表達式功能如下:
1.大于6位 
2.字母+数字 
3.最少二个字母 ^(?=(?:.*?a-zA-Z]){2,})[a-zA-Z0-9]{6,}$
使用了一個正向预查(?=pattern)
和一個非获取匹配(?:pattern)但是 .*? 是何意思?請行家詳細解釋一下。。

解决方案 »

  1.   

    少了个 [  吧?
    是不是这样?^(?=(?:.*?[a-zA-Z]){2,})[a-zA-Z0-9]{6,}$ .默认匹配除了行终止符以外的任何字符
    *
    表示重复0次或者多次,是贪婪匹配,也就是重复次数越多越好,
    而后面的那个?
    让这个贪婪匹配变成了懒惰匹配,就是重复次数由越多越好变成越少越好。这个正则表达式是不是验证:
    由大小写字母或者数字组成的6位的字符串,而且要求至少有两个字母挨在一起?
      

  2.   

     .*?  任何字符(与行结束符可能匹配也可能不匹配)出现零次或多次
    *?是Reluctant 数量词
    /**********************/
    Greedy 数量词 
    X? X,一次或一次也没有 
    X* X,零次或多次 
    X+ X,一次或多次 
    X{n} X,恰好 n 次 
    X{n,} X,至少 n 次 
    X{n,m} X,至少 n 次,但是不超过 m 次 
      
    Reluctant 数量词 
    X?? X,一次或一次也没有 
    X*? X,零次或多次 
    X+? X,一次或多次 
    X{n}? X,恰好 n 次 
    X{n,}? X,至少 n 次 
    X{n,m}? X,至少 n 次,但是不超过 m 次 
      
    Possessive 数量词 
    X?+ X,一次或一次也没有 
    X*+ X,零次或多次 
    X++ X,一次或多次 
    X{n}+ X,恰好 n 次 
    X{n,}+ X,至少 n 次 
    X{n,m}+ X,至少 n 次,但是不超过 m 次 
      

  3.   

    .*? →用了勉强的量词看这个帖子
    http://www.java2000.net/doc/Java.Regex.Tutorial/Java.Regex.Tutorial.html#reg5_3