Regex error Кодовое название одного проекта - PullRequest
0 голосов
/ 01 мая 2018

Я использую класс валидатора для проверки пароля TextField с использованием регулярного выражения, которое заставляет его содержать 1 заглавную букву 1 строчную букву 1 цифру и 1 символ, а его длина должна быть от 6 до 10 символов.

Validator val = new Validator();
Constraint passconst = new RegexConstraint("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d) 
(?=.*[#$^+=!*()@%&]).{6,10}$", "Password invalid");
val.addConstraint(password, passconst);

но я получаю эту ошибку:

com.codename1.util.regex.RESyntaxException: синтаксическая ошибка: отсутствует закрывающий операнд

Я не смог понять ошибку в регулярном выражении, она была сгенерирована с помощью этого сайта https://www.regextester.com/97402

1 Ответ

0 голосов
/ 02 мая 2018

Я нахожу регулярное выражение слишком запутанным, чтобы следовать за ним. Вы можете просто сделать что-то, что лично мне кажется более простым, например:

private static final String supportedCharacters = "abc...";

Constraint passConstraint = new LengthConstraint(6, "Password invalid") {
   @Override
   public boolean isValid(Object value) {
       String s = (String)v;
       for(int i = 0 ; i < s.length() ; i++) {
          if(!supportedCharacters.contains(s.charAt(i)) return false;
       }
       return super.isValid(value) 
   }
};
...