Java String.matches () регулярные выражения - PullRequest
0 голосов
/ 24 января 2012

Я пытаюсь использовать функцию match () для проверки введенного пользователем пароля для определенных условий

"Содержит шесть буквенно-цифровых символов, как минимум одну букву и одну цифру"

Вот мое текущее состояние для проверки буквенно-цифровых символов

pword.matches("([[a-zA-Z]&&0-9])*")

к сожалению, в примере с использованием "rrrrZZ1" в качестве пароля это условие по-прежнему возвращает false

Каким было бы правильное регулярное выражение? Спасибо

Ответы [ 2 ]

5 голосов
/ 24 января 2012

Кто-то здесь может доказать, что я неправ, но это будет очень трудно сделать без чрезмерно сложного регулярного выражения. Я бы просто использовал подход нерегулярных выражений. Установите 3 логических значения для каждого из ваших условий, выполните цикл по символам и установите каждое логическое значение при выполнении каждого условия, а если все 3 логических значения не равны true, то проверка не пройдется.

Вы можете использовать что-то простое, как это:

public boolean validatePassword(String password){
    if(password.length() < 6){
        return false;
    }
    boolean foundLetter = false;
    boolean foundNumber = false;
    for(int i=0; i < password.length(); i++){
        char c = password.charAt(i);
        if(Character.isLetter(c)){
            foundLetter = true;
        }else if(Character.isDigit(c)){
            foundNumber = true;
        }else{
            // Isn't alpha-numeric.
            return false;
        }
    }
    return foundLetter && foundNumber;
}
2 голосов
/ 24 января 2012

Я согласен с ziesemer - используйте метод validatePassword () вместо превращения его в регулярное выражение.

Гораздо более удобочитаемо для разработчика.

Если вы хотите пойти по пути регулярных выражений, это достижимо, если использовать положительный прогноз нулевой ширины.

Содержит шесть символов, как минимум одну букву и одно число:

^.*(?=.{6,})(?=.*[a-zA-Z]).*$

Я изменил вашу шестерку alphanumeric characters на characters. Поддерживает более сложные пароли:)

Отличный пост по теме:

http://www.zorched.net/2009/05/08/password-strength-validation-with-regular-expressions/

Добавьте и эту закладку:

http://www.regular -expressions.info /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...