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.

57 lines
1.6 KiB

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