Проверка регулярных выражений для записей времени - PullRequest
2 голосов
/ 02 января 2012

У меня есть текстовое поле, которое принимает время в формате ЧЧ: мм, а записи должны быть только в 24-часовом формате. Для всех недействительных записей должно отображаться общее сообщение «Неверная запись».

Например:

19:61 //INVALID
12:00am //INVALID
12***M //INVALID

06:00 //VALID
22:00 //VALID
5:45 //VALID

Требуемый код на Java. Не знаком с выражениями регулярных выражений ... так что им нужны ваши идеи. Спасибо заранее! :)

String timeStr = getTimeBoxValue();

Ответы [ 2 ]

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

Есть Ссылка Который вы можете использовать.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Time24HoursValidator{

  private Pattern pattern;
  private Matcher matcher;

  private static final String TIME24HOURS_PATTERN = 
             "([01]?[0-9]|2[0-3]):[0-5][0-9]";

  public Time24HoursValidator(){
      pattern = Pattern.compile(TIME24HOURS_PATTERN);
  }

  /**
   * Validate time in 24 hours format with regular expression
   * @param time time address for validation
   * @return true valid time fromat, false invalid time format
   */
  public boolean validate(final String time){

      matcher = pattern.matcher(time);
      return matcher.matches();

  }
}
1 голос
/ 02 января 2012

Слишком объясните регулярное выражение в комментарии ash108:

^(([0-9])|([0-1][0-9])|([2][0-3])):(([0-9])|([0-5][0-9]))$

^ в начале строки ...

([0-9])|([0-1][0-9])|([2][0-3]) ... должен бытьчисло 0-9 ИЛИ (число с первым 0-1, а затем 0-9) ИЛИ (число с первым 2, а затем 0-3)

: тогда должен быть знак: знак

([0-9])|([0-5][0-9]) тогда должно быть число 0-9 ИЛИ a (число с первым 0-5, а затем 0-9)

$ и затем должен быть конец строки

Есть одна вещь, немного странная с этим выражением, хотя, если вы изучите его.Посмотрите на часть после знака.Это позволит одну цифру 0-9.Следовательно, строка, как в примере 12: 5, будет действительной.Imo эта часть, вероятно, должна быть удалена, в результате чего:

^(([0-9])|([0-1][0-9])|([2][0-3])):([0-5][0-9])$

Теперь часть после знака: вынуждена иметь две цифры, в то время как часть перед знаком: может иметь одну или две цифры.

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