From 72cd365b266a1a060ef8d8ad6daef2ad266bbf0c Mon Sep 17 00:00:00 2001 From: Mo Helmy <135069400+BenHelmyBen@users.noreply.github.com> Date: Tue, 23 Jan 2024 21:21:56 +0200 Subject: [PATCH] This PR is related to BAEL-7174 (#15712) * Update pom.xml Add: core-java-regex-3 * This commit is related to BAEL-7174 This commit aims to add a new module named "core-java-regex-3" and a new project named "passwordvalidation" to validate passwords using regex. * Update PasswordValidationUsingRegexUnitTest.java Change else-if to assertTrue(matcher.matches()); --- core-java-modules/core-java-regex-3/README.md | 3 ++ core-java-modules/core-java-regex-3/pom.xml | 24 +++++++++ .../PasswordValidationUsingRegexUnitTest.java | 53 +++++++++++++++++++ core-java-modules/pom.xml | 1 + 4 files changed, 81 insertions(+) create mode 100644 core-java-modules/core-java-regex-3/README.md create mode 100644 core-java-modules/core-java-regex-3/pom.xml create mode 100644 core-java-modules/core-java-regex-3/src/test/java/com/baeldung/passwordvalidation/PasswordValidationUsingRegexUnitTest.java diff --git a/core-java-modules/core-java-regex-3/README.md b/core-java-modules/core-java-regex-3/README.md new file mode 100644 index 0000000000..18b5f0127f --- /dev/null +++ b/core-java-modules/core-java-regex-3/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- More articles: [[<-- prev]](/core-java-modules/core-java-regex-2) diff --git a/core-java-modules/core-java-regex-3/pom.xml b/core-java-modules/core-java-regex-3/pom.xml new file mode 100644 index 0000000000..143b615246 --- /dev/null +++ b/core-java-modules/core-java-regex-3/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + core-java-regex-3 + core-java-regex-3 + + + org.junit.jupiter + junit-jupiter + 5.8.1 + test + + + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + + \ No newline at end of file diff --git a/core-java-modules/core-java-regex-3/src/test/java/com/baeldung/passwordvalidation/PasswordValidationUsingRegexUnitTest.java b/core-java-modules/core-java-regex-3/src/test/java/com/baeldung/passwordvalidation/PasswordValidationUsingRegexUnitTest.java new file mode 100644 index 0000000000..b55943f1b6 --- /dev/null +++ b/core-java-modules/core-java-regex-3/src/test/java/com/baeldung/passwordvalidation/PasswordValidationUsingRegexUnitTest.java @@ -0,0 +1,53 @@ +package com.baeldung.passwordvalidation; + +import org.junit.jupiter.api.Test; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.junit.jupiter.api.Assertions.*; + +public class PasswordValidationUsingRegexUnitTest { + String password = "Baeldung20@"; + + @Test + public void givenStringPassword_whenUsingDynamicPasswordValidationRules_thenCheckIfPasswordValid() { + boolean result = false; + try { + if (password != null) { + String MIN_LENGHT = "8"; + String MAX_LENGHT = "20"; + boolean SPECIAL_CHAR_NEEDED = false; + + String ONE_DIGIT = "(?=.*[0-9])"; + String LOWER_CASE = "(?=.*[a-z])"; + String UPPER_CASE = "(?=.*[A-Z])"; + String SPECIAL_CHAR = SPECIAL_CHAR_NEEDED ? "(?=.*[@#$%^&+=])" : ""; + String NO_SPACE = "(?=\\S+$)"; + + String MIN_MAX_CHAR = ".{" + MIN_LENGHT + "," + MAX_LENGHT + "}"; + String PATTERN = ONE_DIGIT + LOWER_CASE + UPPER_CASE + SPECIAL_CHAR + NO_SPACE + MIN_MAX_CHAR; + + assertTrue(password.matches(PATTERN)); + } + + } catch (Exception ex) { + ex.printStackTrace(); + fail("Exception occurred: " + ex.getMessage()); + } + } + + @Test + public void givenStringPassword_whenUsingRegulaExpressions_thenCheckIfPasswordValid() { + + + String regExpn = + "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,20}$"; + + Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(password); + + assertTrue(matcher.matches()); + } + +} diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index ec6c8bcb3c..569e5df9bc 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -200,6 +200,7 @@ core-java-string-operations-7 core-java-regex core-java-regex-2 + core-java-regex-3 core-java-uuid core-java-collections-maps-6 core-java-records