<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    新的起點(diǎn) 新的開(kāi)始

    快樂(lè)生活 !

    請(qǐng)正則表達(dá)式高手給出更好的解決方案

        在目前的項(xiàng)目中,對(duì)用戶輸入的密碼的校驗(yàn)有如下要求:
                   1. 必須8位到15位。
                   2.至少包含如何四組中的三組。
                       (1)  包含a-z
                       (2)  包含A-Z
                       (3)  包含0-9
                       (4)   包含特殊字符:@#$%
        本人對(duì)正則表達(dá)式也是懵懵懂懂,只能像如下比較弱弱的實(shí)現(xiàn),請(qǐng)正則表達(dá)式高手給出更好的解決方案,當(dāng)然其他方式也歡迎!

        /*
         *  Validate password  follow setups:
         *  1. if parameter is null return false;
         *  2. if parameter's length is not from 8 to 15 return false;
         *  3. if parameter include other character  return false;
         *  4. if parameter has group of CapitalCharacter or Lowercase or Number or SpecialCharacter 
         *     and more then three groups then return true whereas return false;
         * 
         
    */

        
    public static boolean validatePassword(String str){
            
    boolean isValidated = false;
            
    if(str==null){return isValidated;}  //setup 1  
            
            
    if(str.length()<8 || str.length()>15){return isValidated;} //setup 2  
            
            String includeOthers
    ="[a-z|A-Z|0-9|@#$%]+";     //setup 3 
            Pattern p = Pattern.compile(includeOthers);
            Matcher m 
    = p.matcher(str);
            
    if(!m.matches()){
                
    return isValidated; // include other invalid character, return false;
            }

            String validate
    ="([0-9]+)|([a-z]+)|([A-Z]+)|([@#$%]+)"//setup 4
            p = Pattern.compile(validate);
            m 
    = p.matcher(str);
            
    boolean hasCapitalCharacter = false;
            
    boolean hasLowercase  = false;
            
    boolean hasNumber  = false;
            
    boolean hasSpecialCharacter  = false;
            
    while (m.find()) {
                
    if(m.group(1)!=null &&!"".equals(m.group(1))) hasNumber = true;
                
    if(m.group(2)!=null &&!"".equals(m.group(2))) hasLowercase = true;
                
    if(m.group(3)!=null &&!"".equals(m.group(3))) hasCapitalCharacter = true;
                
    if(m.group(4)!=null &&!"".equals(m.group(4))) hasSpecialCharacter = true;
            }

            
    int count = 0;
            
    if(hasCapitalCharacter)count++;
            
    if(hasLowercase)count++;
            
    if(hasNumber)count++;
            
    if(hasSpecialCharacter)count++;
            
    if(count>=3)isValidated =true;
            
    return isValidated;
            
        }


    靜靜等候中..........................

    posted on 2009-07-22 22:16 advincenting 閱讀(1465) 評(píng)論(11)  編輯  收藏

    評(píng)論

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-22 23:53 菜菜寶寶

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class PasswordTest {

    private final static Matcher passwordMatcher = Pattern.compile(
    "^(?:([a-z])|([A-Z])|([0-9])|([@#$%])){8,15}$"
    ).matcher("");

    public static void main(String[] args) {

    String[] strs = {
    "abcdefg12345",
    "aaabbbAAA$$$",
    "aaabbbAAAa@13434",
    "aaAA11",
    "AAAaaa113@"
    };

    for(int i = 0; i < strs.length; i++) {
    System.out.printf("str: %-20s length: %2d result: %s%n",
    strs[i],
    strs[i].length(),
    checkPassword(strs[i])
    );
    }
    }

    public static boolean checkPassword(String password) {

    if (password == null) {
    return false;
    }

    passwordMatcher.reset(password);

    if (!passwordMatcher.matches()) {
    return false;
    }

    int count = 0;
    for (int i = passwordMatcher.groupCount(); i > 0; i--) {
    if (passwordMatcher.start(i) > -1) {
    count++;
    }
    }
    return (count >= 3);
    }
    }

      回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-22 23:55 游客

    長(zhǎng)度Check:
    [a-zA-Z0-9@#$%]{8,15}
    有效性Check:
    ([a-z]+[A-Z]+[0-9]+)|
    ([A-Z]+[0-9]+[@#$%]+)|
    ([a-z]+[0-9]+[@#$%]+)|
    ([a-z]+[A-Z]+[@#$%]+)

    使用前請(qǐng)好好測(cè)試一下兒!  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-23 00:01 游客

    @菜菜寶寶

    aaaZXXXXCCCC

    好像這個(gè)字符串也可以被匹配上吧!
    這和LZ的要求不太符合!  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-23 00:03 菜菜寶寶

    @游客

    您好,aaaZXXXXCCCC 這個(gè)的匹配結(jié)果返回的是 false 啊。  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-23 09:56 advincenting

    菜菜寶寶 不錯(cuò)!  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案[未登錄](méi) 2009-07-23 12:55 cxh

    還在后臺(tái)判斷?為什么不在前臺(tái)判斷呢?  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案[未登錄](méi) 2009-07-23 17:13 john

    @菜菜寶寶
    贊,學(xué)習(xí)  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-23 21:55 xing.liu

    ^((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[@#$%])|(?=.*\d)(?=.*[a-z])(?=.*[@#$%])|(?=.*[A-Z])(?=.*[a-z])(?=.*[@#$%]))[0-9a-zA-Z@#$%]{8,15}$  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-23 21:57 xing.liu

    當(dāng)作是復(fù)習(xí)一下正則.  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-23 22:01 xing.liu

    @菜菜寶寶
    999999@LLL 不匹配  回復(fù)  更多評(píng)論   

    # re: 請(qǐng)正則表達(dá)式高手給出更好的解決方案 2009-07-25 01:59 菜菜寶寶

    @xing.liu

    @菜菜寶寶
    999999@LLL 不匹配
    ----------------------------------
    999999@LLL 我測(cè)試的結(jié)果是 true 啊?符合博主的要求。  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    公告

    Locations of visitors to this pageBlogJava
  • 首頁(yè)
  • 新隨筆
  • 聯(lián)系
  • 聚合
  • 管理
  • <2009年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計(jì)

    常用鏈接

    留言簿(13)

    隨筆分類(lèi)(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類(lèi)

    IT人的英語(yǔ)學(xué)習(xí)網(wǎng)站

    JAVA站點(diǎn)

    優(yōu)秀個(gè)人博客鏈接

    官網(wǎng)學(xué)習(xí)站點(diǎn)

    生活工作站點(diǎn)

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产精品免费观看久久| 亚洲精品网站在线观看不卡无广告| 亚洲一区二区三区乱码在线欧洲| 天天天欲色欲色WWW免费| 日韩毛片免费一二三| 亚洲最大av无码网址| 91精品国产免费网站| 亚洲av中文无码乱人伦在线观看| 国产精品亚洲视频| 100部毛片免费全部播放完整| 亚洲AV无码AV吞精久久| 精品亚洲一区二区| 免费黄色小视频网站| 99re8这里有精品热视频免费| 亚洲AV色吊丝无码| 亚洲人成精品久久久久| 在线观看无码AV网站永久免费| 美女黄频a美女大全免费皮| 亚洲综合图片小说区热久久| 日韩免费观看的一级毛片| 国产做国产爱免费视频| 亚洲欧洲日韩国产一区二区三区| 国产福利电影一区二区三区,亚洲国模精品一区 | 免费观看成人久久网免费观看| 亚洲熟妇AV日韩熟妇在线| 亚洲AV无码久久精品成人 | 久久久久久AV无码免费网站下载 | 最新欧洲大片免费在线| 精品国产一区二区三区免费| 亚洲AV成人无码久久WWW| 亚洲视频精品在线| 亚洲国产高清精品线久久| 可以免费看黄视频的网站| 你是我的城池营垒免费看 | 亚洲国产成人久久综合一 | 久久国产色AV免费看| 亚洲AV无码一区二区乱子仑| 久久久久亚洲AV无码网站| 亚洲精品尤物yw在线影院| 最近最好的中文字幕2019免费| 人人玩人人添人人澡免费|