<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 正則表達式密碼驗證示例 > 原文: [https://howtodoinjava.com/regex/how-to-build-regex-based-password-validator-in-java/](https://howtodoinjava.com/regex/how-to-build-regex-based-password-validator-in-java/) **密碼驗證**是當今幾乎所有應用程序的需求。 通過手動編寫所有內容以使用第三方可用的 API,可以通過多種方法來驗證密碼。 在此 **Java 正則表達式密碼驗證教程**中,我們正在使用[**正則表達式**](//howtodoinjava.com/java-regular-expression-tutorials/ "regular-expressions")構建**密碼驗證器**。 ## 1\. 用于密碼驗證的正則表達式 > `((?=.*[a-z])(?=.*d)(?=.*[@#$%])(?=.*[A-Z]).{6,16})` 上面的正則表達式有以下幾節: ```java (?=.*[a-z])? : This matches the presence of at least one lowercase letter. (?=.*d)???? : This matches the presence of at least one digit i.e. 0-9. (?=.*[@#$%]) : This matches the presence of at least one special character. ((?=.*[A-Z]) : This matches the presence of at least one capital letter. {6,16}?????? : This limits the length of password from minimum 6 letters to maximum 16 letters. ``` 前 4 個部分的順序可以更改,甚至可以從最終正則表達式中刪除。 這個事實可以用來以編程方式構建我們的密碼驗證器。 ## 2\. 使用正則表達式驗證密碼的 Java 程序 我們正在使驗證器可配置,以便可以根據需要設置限制。 就像我們要強制使用至少一個特殊字符而不是任何大寫字母一樣,我們可以相應地傳遞所需的參數。 ```java package com.howtodoinjava.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PasswordValidator { private static PasswordValidator INSTANCE = new PasswordValidator(); private static String pattern = null; /** * No one can make a direct instance * */ private PasswordValidator() { //do nothing } /** * Force the user to build a validator using this way only * */ public static PasswordValidator buildValidator( boolean forceSpecialChar, boolean forceCapitalLetter, boolean forceNumber, int minLength, int maxLength) { StringBuilder patternBuilder = new StringBuilder("((?=.*[a-z])"); if (forceSpecialChar) { patternBuilder.append("(?=.*[@#$%])"); } if (forceCapitalLetter) { patternBuilder.append("(?=.*[A-Z])"); } if (forceNumber) { patternBuilder.append("(?=.*d)"); } patternBuilder.append(".{" + minLength + "," + maxLength + "})"); pattern = patternBuilder.toString(); return INSTANCE; } /** * Here we will validate the password * */ public static boolean validatePassword(final String password) { Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(password); return m.matches(); } } ``` ## 3\. 密碼驗證的單元測試 因此,我們的密碼驗證程序已準備就緒。 讓我們用一些 [**JUnit**](https://howtodoinjava.com/junit-5-tutorial/ "junit") 測試用例進行測試。 ```java package com.howtodoinjava.regex; import junit.framework.Assert; import org.junit.Test; @SuppressWarnings("static-access") public class TestPasswordValidator { @Test public void testNormalPassword() { PasswordValidator validator = PasswordValidator.buildValidator(false, false, false, 6, 14); Assert.assertTrue(validator.validatePassword("howtodoinjava")); Assert.assertTrue(validator.validatePassword("howtodoin")); //Sort on length Assert.assertFalse(validator.validatePassword("howto")); } @Test public void testForceNumeric() { PasswordValidator validator = PasswordValidator.buildValidator(false,false, true, 6, 16); //Contains numeric Assert.assertTrue(validator.validatePassword("howtodoinjava12")); Assert.assertTrue(validator.validatePassword("34howtodoinjava")); Assert.assertTrue(validator.validatePassword("howtodo56injava")); //No numeric Assert.assertFalse(validator.validatePassword("howtodoinjava")); } @Test public void testForceCapitalLetter() { PasswordValidator validator = PasswordValidator.buildValidator(false,true, false, 6, 16); //Contains capitals Assert.assertTrue(validator.validatePassword("howtodoinjavA")); Assert.assertTrue(validator.validatePassword("Howtodoinjava")); Assert.assertTrue(validator.validatePassword("howtodOInjava")); //No capital letter Assert.assertFalse(validator.validatePassword("howtodoinjava")); } @Test public void testForceSpecialCharacter() { PasswordValidator validator = PasswordValidator.buildValidator(true,false, false, 6, 16); //Contains special char Assert.assertTrue(validator.validatePassword("howtod@injava")); Assert.assertTrue(validator.validatePassword("@Howtodoinjava")); Assert.assertTrue(validator.validatePassword("howtodOInjava@")); //No special char Assert.assertFalse(validator.validatePassword("howtodoinjava")); } } ``` 在這篇文章中,我們學習了使用 Java 正則表達式進行密碼驗證的方法,該規則能夠驗證字母數字和特殊字符,包括最大和最小密碼長度。 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看