@demon123
developer

Как вам вариант, с точки зрения надежности и правильности?

Пишу так в сервлете
//Проверка на валидность лицензиада
            if (!checkLices(lices)) {
                LOG.error("Запрещенные символы в " + lices);
                out.print("<h1>Извините, произошла ошибка в строке: " + lices + "</h1><br>"
                        + "разрешены только: латиница, цифры, (), -, _, пробел");
                return;
            }
 
            //Проверка на валидность otpCount, clientsCount, certPeriod
            if (!checkNumbers(otpCount) || !checkNumbers(clientsCount) || !checkNumbers(certPeriod)) {
                LOG.error("Запрещенные символы в одной из строк: " + otpCount + " " + clientsCount + " " + certPeriod);
                out.print("<h1>Ошибка, В 1, 2, 5 полях разрешены только цифры!</h1>");
                return;
            }


private boolean checkLices(String checkString) {
        Pattern p = Pattern.compile("[A-Za-z0-9-_ ()]+");
        Matcher m = p.matcher(checkString);
        return m.matches();
    }
 
    private boolean checkNumbers(String checkNum) {
        Pattern p = Pattern.compile("[0-9]+");
        Matcher m = p.matcher(checkNum);
        return m.matches();
    }


И еще хотел спросить, как в паттерн разрешить ввод квад. скобок([])?
  • Вопрос задан
  • 2307 просмотров
Решения вопроса 2
targetjump
@targetjump
Особо не вникая в логику можно сразу сказать, что инстансы Pattern должны быть как минимум static.

Например
...
private static final Pattern NUMBER = Pattern.compile("[0-9]+");
...


имена для методов подобраны тоже не лучшим образом ибо "чек" обычно "чтото" проверяет и если "чтото" невалидное то этот метод должен тровнуть ексепшин.
В Вашем же случае лучше использовать метод из префиксом "is"

private boolean isNumber(String src) {
    return NUMBER.matcher(src).matches();
}
Ответ написан
@asd111
Pattern p = Pattern.compile("[\[\]]+");

перед спецсимволами ставится \
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы