亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何利用Java正則表達式校驗密碼規(guī)則

 更新時間:2022年09月30日 10:49:01   作者:有錯誤先debug  
正則表達式正則表達式是用來指定字符串模式的,可以方便的處理文本信息,這篇文章主要給大家介紹了關(guān)于如何利用Java正則表達式校驗密碼規(guī)則的相關(guān)資料,需要的朋友可以參考下

密碼規(guī)則:

  • 它至少包含 8 個字符,最多包含 20 個字符。
  • 它至少包含一個數(shù)字。
  • 它至少包含一個大寫字母。
  • 它至少包含一個小寫字母。
  • 它至少包含一個特殊字符,其中包括 !@#$%&*()-+=^。
  • 它不包含任何空白區(qū)域

正則表達式

String rex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,20}$";

說明:

  • ^表示字符串的起始字符。
  • (?=.*[0-9]) 表示一個數(shù)字必須至少出現(xiàn)一次。
  • (?=.*[a-z]) 表示小寫字母表必須至少出現(xiàn)一次。
  • (?=.*[A-Z]) 表示必須至少出現(xiàn)一次的大寫字母。
  • (?=.*[@#$%^&-+=()] 表示必須至少出現(xiàn)一次的特殊字符。
  • (?=\S+$) 整個字符串中不允許使用空格。
  • .{8, 20}表示至少 8 個字符,最多 20 個字符。
  • $表示字符串的末尾。

使用方法:

通過Java的Pattern.matches()方法進行匹配,如果給定的密碼符合條件,返回true,否則返回false

    public static void main(String[] args) {
        //密碼至少包含:大小寫英文字母、數(shù)字、特殊符號,密碼長度大于8位,小于20位
        String password = "sAAAsasdadsadsa12&_";
        String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,20}$";
        boolean matches = Pattern.matches(regex, password);
        System.out.println(matches);//true
    }

補充:java正則校驗密碼

長度不少于8位且至少包含大寫字母、小寫字母、數(shù)字和特殊符號中的四種組合 或者 其中任意三種組合

一、排除法和詳細解釋

  1、排除大寫字母、小寫字母、數(shù)字、特殊符號中1種組合、2種組合、3種組合,那么就只剩下4種都包含的組合了

  2、表達式為:^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$

  3、拆分解釋:其中(2)-(6)運用了零寬斷言、環(huán)視等正則功能

   ?。?)^匹配開頭

   ?。?)(?![A-Za-z0-9]+$)匹配后面不全是(大寫字母或小寫字母或數(shù)字)的位置,排除了(大寫字母、小寫字母、數(shù)字)的1種2種3種組合

   ?。?)(?![a-z0-9\\W]+$)同理,排除了(小寫字母、數(shù)字、特殊符號)的1種2種3種組合

   ?。?)(?![A-Za-z\\W]+$)同理,排除了(大寫字母、小寫字母、特殊符號)的1種2種3種組合

    (5)(?![A-Z0-9\\W]+$)同理,排除了(大寫字母、數(shù)組、特殊符號)的1種2種3種組合

   ?。?)[a-zA-Z0-9\\W]匹配(小寫字母或大寫字母或數(shù)字或特殊符號)因為排除了上面的組合,所以就只剩下了4種都包含的組合了

    (7){8,}8位以上

   ?。?)$匹配字符串結(jié)尾

二、測試代碼

public class PasswordTest {
    // 密碼長度不少于8位且至少包含大寫字母、小寫字母、數(shù)字和特殊符號中的四種
    public static final String password1 = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
    // 密碼長度8-20位且至少包含大寫字母、小寫字母、數(shù)字或特殊符號中的任意三種
    public static final String password = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,20}$";
 
    public static void main(String[] args) {
        String password1 = "ABCDEFGHIG";  //全部大寫
        String password2 = "abcdefghig";  //全部小寫
        String password3 = "0123456789";  //全部數(shù)字
        String password4 = "!@#$%^&*()";  //全部特殊字符
        String password5 = "ABCDEabcde";  //大寫和小寫
        String password6 = "ABCDE01234";  //大寫和數(shù)字
        String password7 = "ABCDE!@#$%";  //大寫和特殊字符
        String password8 = "abcde01234";  //小寫和數(shù)字
        String password9 = "abcde!@#$%";  //小寫字母和特殊字符
        String password10 = "01234!@#$%"; //數(shù)字和特殊字符
        String password11 = "Aa4!";       //長度不夠8位數(shù)
        String password12 = "ABCDE01234!@#$%"; //符合要求密碼任意三種
        String password13 = "ABCDEabcde!@#$%"; //符合要求密碼任意三種
        String password14 = "ABCDEabcde01234"; //符合要求密碼任意三種
        String password15 = "abcde01234!@#$%"; //符合要求密碼任意三種
        String password16= "ABCabc012@#"; //符合要求密碼任意三種 和 符合全部的四種
 
        System.out.println(password1.matches(password) + " 1");
        System.out.println(password2.matches(password)+ " 2");
        System.out.println(password3.matches(password)+ " 3");
        System.out.println(password4.matches(password)+ " 4");
        System.out.println(password5.matches(password)+ " 5");
        System.out.println(password6.matches(password)+ " 6");
        System.out.println(password7.matches(password)+ " 7");
        System.out.println(password8.matches(password)+ " 8");
        System.out.println(password9.matches(password)+ " 9");
        System.out.println(password10.matches(password)+ " 10");
        System.out.println(password11.matches(password)+ " 11");
        System.out.println(password12.matches(password)+ " 12");
        System.out.println(password13.matches(password)+ " 13");
        System.out.println(password14.matches(password)+ " 14");
        System.out.println(password15.matches(password)+ " 15");
        System.out.println(password16.matches(password)+ " 16");
    }
}

總結(jié)

到此這篇關(guān)于如何利用Java正則表達式校驗密碼規(guī)則的文章就介紹到這了,更多相關(guān)Java正則校驗密碼規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Java中ConcurrentHashMap的存儲流程

    淺析Java中ConcurrentHashMap的存儲流程

    ConcurrentHashMap技術(shù)在互聯(lián)網(wǎng)技術(shù)使用如此廣泛,幾乎所有的后端技術(shù)面試官都要在ConcurrentHashMap技術(shù)的使用和原理方面對小伙伴們進行360°的刁難,本文詳細給大家介紹一下ConcurrentHashMap的存儲流程,需要的朋友可以參考下
    2023-05-05
  • 初識Java設(shè)計模式適配器模式

    初識Java設(shè)計模式適配器模式

    這篇文章主要為大家詳細介紹了Java設(shè)計模式適配器模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Spring源碼之循環(huán)依賴之三級緩存詳解

    Spring源碼之循環(huán)依賴之三級緩存詳解

    這篇文章主要為大家詳細介紹了Spring源碼之循環(huán)依賴之三級緩存,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法

    SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法

    微服務(wù)架構(gòu)中多數(shù)據(jù)源切換是個常見的需求,Spring Boot 提供了強大的支持來簡化這一過程.本文給大家介紹了SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法,需要的朋友可以參考下
    2024-11-11
  • 基于Java HashMap的死循環(huán)的啟示詳解

    基于Java HashMap的死循環(huán)的啟示詳解

    本篇文章是對Java HashMap的死循環(huán)進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Spring-Security實現(xiàn)登錄接口流程

    Spring-Security實現(xiàn)登錄接口流程

    Security?是?Spring?家族中的一個安全管理框架,SpringSecurity的原理其實就是一個過濾器鏈,內(nèi)部包含了提供各種功能的過濾器,這篇文章主要介紹了Spring-Security實現(xiàn)登錄接口,需要的朋友可以參考下
    2023-05-05
  • RequestContextHolder.getRequestAttributes()空指針問題及解決

    RequestContextHolder.getRequestAttributes()空指針問題及解決

    這篇文章主要介紹了RequestContextHolder.getRequestAttributes()空指針問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringSecurity概念及整合ssm框架的示例詳解

    SpringSecurity概念及整合ssm框架的示例詳解

    用戶登錄系統(tǒng)時我們協(xié)助?SpringSecurity?把用戶對應(yīng)的角色、權(quán)限組裝好,同時把各個資源所要求的權(quán)限信息設(shè)定好,剩下的“登錄驗證”、“權(quán)限驗證”等等工作都交給SpringSecurity,對SpringSecurity整合ssm框架相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • java程序員如何編寫更好的單元測試的7個技巧

    java程序員如何編寫更好的單元測試的7個技巧

    測試是開發(fā)的一個非常重要的方面,可以在很大程度上決定一個應(yīng)用程序的命運。良好的測試可以在早期捕獲導(dǎo)致應(yīng)用程序崩潰的問題,但較差的測試往往總是導(dǎo)致故障和停機。本文主要介紹java程序員編寫更好的單元測試的7個技巧。下面跟著小編一起來看下吧
    2017-03-03
  • java工程師進階之MyBatis延遲加載的使用

    java工程師進階之MyBatis延遲加載的使用

    本文是java工程師進階篇,主要介紹了java應(yīng)用開發(fā)中MyBatis延遲加載及如何使用,有需要的朋友 可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評論