- String contains at least one digit
- int combinations = 0;
- string pass = "!!!AAabas1";
- if (pass.matches("[0-9]")) {
- combinations = combinations + 10;
- }
- if (pass.matches("[a-z]")) {
- combinations =combinations + 26;
- }
- if (pass.matches("[A-Z]")) {
- combinations =combinations + 26;
- }
- int combinations = 0;
- String pass = "!!AAabas1";
- if (Pattern.compile("[0-9]").matcher(pass).find()) {
- combinations = combinations + 10;
- }
- if (Pattern.compile("[a-z]").matcher(pass).find()) {
- combinations = combinations + 26;
- }
- if (Pattern.compile("[A-Z]").matcher(pass).find()) {
- combinations = combinations + 26;
- }
- if (CharMatcher.inRange('0', '9').matchesAnyOf(pass))
- combinations += 10;
- if (CharMatcher.inRange('a', 'z').matchesAnyOf(pass))
- combinations += 26;
- if (CharMatcher.inRange('A', 'Z').matchesAnyOf(pass))
- combinations += 26;
- import java.util.regex.Pattern;
- public class PasswordValidator {
- public static void main(String[] args) {
- final PasswordValidator passwordValidator = new PasswordValidator();
- for (String password : new String[] { "abc", "abc123", "ABC123", "abc123ABC", "!!!AAabas1", "гшщз",
- "гшщзЧСМИ22" }) {
- System.out.printf("Password '%s' is %s%n", password, passwordValidator.isValidPassword(password) ? "ok"
- : "INVALID");
- }
- }
- private static final Pattern LOWER_CASE = Pattern.compile("\p{Lu}");
- private static final Pattern UPPER_CASE = Pattern.compile("\p{Ll}");
- private static final Pattern DECIMAL_DIGIT = Pattern.compile("\p{Nd}");
- /**
- * Determine if a password is valid.
- *
- * <p>
- * A password is considered valid if it contains:
- * <ul>
- * <li>At least one lower-case letter</li>
- * <li>At least one upper-case letter</li>
- * <li>At least one digit</li>
- * </p>
- *
- * @param password
- * password to validate
- * @return True if the password is considered valid, otherwise false
- */
- public boolean isValidPassword(final String password) {
- return containsDigit(password) && containsLowerCase(password) && containsUpperCase(password);
- }
- private boolean containsDigit(final String str) {
- return DECIMAL_DIGIT.matcher(str).find();
- }
- private boolean containsUpperCase(final String str) {
- return UPPER_CASE.matcher(str).find();
- }
- private boolean containsLowerCase(final String str) {
- return LOWER_CASE.matcher(str).find();
- }
- }
- Password 'abc' is INVALID
- Password 'abc123' is INVALID
- Password 'ABC123' is INVALID
- Password 'abc123ABC' is ok
- Password '!!!AAabas1' is ok
- Password 'гшщз' is INVALID
- Password 'гшщзЧСМИ22' is ok