高安全性密碼的正則表達式驗證


在許多情況下,要求用戶的必須符合規則:包含數字,小寫英文字母,大寫英文字母,特殊字符~!@#$%^&之一,且長度必須>=6

有許多方法,其中一個是正則表達式.

在java中使用正則表達式,並不是很方便,最后還是使用:

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

具體代碼如下(此處沒有檢驗長度,只是檢驗是否包含特定字符):

/**
     * @author lzf
     * @created on 2019年10月24日 下午2:48:38
     * @功能   判斷密碼是否都包含了 數字,小寫英文字母,大寫英文字母,特別符號(~!@#$%^&*_)
     * @param passwd 明文密碼字符串
     * @return  如果都包含,則返回true,否則返回false..
     */
    private boolean isPassWordValid(String passwd){
        String regExpS="(?<one>[0-9])|(?<two>[a-z])|(?<four>[A-Z])|(?<three>[~!@#$%^&*_])";
        Pattern r = Pattern.compile(regExpS);
        Matcher isMatch = r.matcher(passwd);
        boolean isFindNumberOk=false;
        boolean isFindSmallAlphabetOk=false;
        boolean isFindBigAlphabetOk=false;
        boolean isFindSpecialSymblOk=false;
        while (isMatch.find()){
            String one=isMatch.group("one");
            if (one!=null && isFindNumberOk==false){
                isFindNumberOk=true;
            }
            String two=isMatch.group("two");
            if (two!=null && isFindSmallAlphabetOk==false){
                isFindSmallAlphabetOk=true;
            }
            String three=isMatch.group("three");
            if (three!=null && isFindSpecialSymblOk==false){
                isFindSpecialSymblOk=true;
            }
            String four=isMatch.group("four");
            if (four!=null && isFindBigAlphabetOk==false){
                isFindBigAlphabetOk=true;
            }
            //System.out.println(one+"--"+two+"----"+three+"----"+four);
        }
        
        if (  isFindNumberOk && isFindSmallAlphabetOk && isFindBigAlphabetOk && isFindSpecialSymblOk){
            return true;                    
            //System.out.println("在字符串["+srcStr+"]中發現了數字、小寫字母、大寫字母和特定符號");
        }
        else{
            return false;
        }
    }

上面的代碼,可以滿足結果,但不是很高效,甚至特定情況下,不如逐個分析字符串來得高效。不過用於驗證密碼輸入是否滿足規則的業務通常對性能要求不高,所以也可以將就!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM