You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.2 KiB

  1. import java.util.regex.Pattern;
  2. public class PasswordValidator {
  3. int minLength = 6;
  4. boolean requireUppercase = true;
  5. boolean requireLowercase = true;
  6. private final Pattern uppercasePattern = Pattern.compile("^(?=.*[A-Z]).+$");
  7. private final Pattern lowercasePattern = Pattern.compile("^(?=.*[a-z]).+$");
  8. public boolean validate(String password) {
  9. if (password.length() < minLength) {
  10. return false;
  11. } else if (requireUppercase && !uppercasePattern.matcher(password).matches()) {
  12. return false;
  13. } else if (requireLowercase && !lowercasePattern.matcher(password).matches()) {
  14. return false;
  15. }
  16. return true;
  17. }
  18. public int getMinLength() {
  19. return minLength;
  20. }
  21. public void setMinLength(int minLength) {
  22. this.minLength = minLength;
  23. }
  24. public boolean isRequireUppercase() {
  25. return requireUppercase;
  26. }
  27. public void setRequireUppercase(boolean requireUppercase) {
  28. this.requireUppercase = requireUppercase;
  29. }
  30. public boolean isRequireLowercase() {
  31. return requireLowercase;
  32. }
  33. public void setRequireLowercase(boolean requireLowercase) {
  34. this.requireLowercase = requireLowercase;
  35. }
  36. }