Как проверить время в формате 24 часа с регулярным выражением

Как проверить время в 24-часовом формате с помощью регулярного выражения

Время в 24-часовом формате Шаблон регулярного выражения

([01]?[0-9]|2[0-3]):[0-5][0-9]

Описание

(               #start of group #1
 [01]?[0-9]         #  start with 0-9,1-9,00-09,10-19
 |              #  or
 2[0-3]             #  start with 20-23
)               #end of group #1
 :              #    follow by a semi colon (:)
  [0-5][0-9]            #      follw by 0..5 and 0..9, which means 00 to 59

24-часовой формат времени начинается с 0–23 или 00–23, затем с точки с запятой (:) и после 00–59.

Пример регулярного выражения Java

package com.example.regex;

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. «01:00», «02:00», «13:00»,
2. «1:00», «2:00», «13:01»,
3. «23:59 ″,» 15:00 »
4. «00:00 ″,« 0:00 »

Формат времени не соответствует:

1. «24:00» - час вне диапазона [0-23]
с 2. «12:60» - минута вне допустимого диапазона [00-59]
3. «0: 0» - недопустимый формат минуты, минимум 2 цифры
4. «13: 1» - недопустимый формат минуты, минимум 2 цифры
5. «101: 00» - час вне допустимого диапазона [0–23]

Модульный тест - время24 часаValidatorTest

package com.example.regex;

import org.testng.Assert;
import org.testng.annotations.*;

/**
 * Time 24 hours format validator Testing
 * @author example
 *
 */
public class Time24HoursValidatorTest {

    private Time24HoursValidator time24HoursValidator;

    @BeforeClass
        public void initData(){
        time24HoursValidator = new Time24HoursValidator();
        }

    @DataProvider
    public Object[][] ValidTime24HoursProvider() {
        return new Object[][]{
            new Object[] {"01:00"}, new Object[] {"02:00"},
                        new Object[] {"13:00"}, new Object[] {"1:00"},
                        new Object[] {"2:00"},new Object[] {"13:01"},
                new Object[] {"23:59"}, new Object[] {"15:00"},
                new Object[] {"00:00"}, new Object[] {"0:00"}
        };
    }

    @DataProvider
    public Object[][] InvalidTime24HoursProvider() {
        return new Object[][]{
            new Object[] {"24:00"},new Object[] {"12:60"},
            new Object[] {"0:0"},new Object[] {"13:1"},
            new Object[] {"101:00"}
        };
    }

    @Test(dataProvider = "ValidTime24HoursProvider")
    public void ValidTime24HoursTest(String time) {
        boolean valid = time24HoursValidator.validate(time);
        System.out.println("Time24Hours is valid : " + time + " , " + valid);
        Assert.assertEquals(true, valid);
    }

    @Test(dataProvider = "InvalidTime24HoursProvider",
                 dependsOnMethods="ValidTime24HoursTest")
    public void InValidTime24HoursTest(String time) {
        boolean valid = time24HoursValidator.validate(time);
        System.out.println("Time24Hours is valid : " + time + " , " + valid);
        Assert.assertEquals(false, valid);
    }
}

Модульный тест - результат

Time24Hours is valid : 01:00 , true
Time24Hours is valid : 02:00 , true
Time24Hours is valid : 13:00 , true
Time24Hours is valid : 1:00 , true
Time24Hours is valid : 2:00 , true
Time24Hours is valid : 13:01 , true
Time24Hours is valid : 23:59 , true
Time24Hours is valid : 15:00 , true
Time24Hours is valid : 00:00 , true
Time24Hours is valid : 0:00 , true
Time24Hours is valid : 24:00 , false
Time24Hours is valid : 12:60 , false
Time24Hours is valid : 0:0 , false
Time24Hours is valid : 13:1 , false
Time24Hours is valid : 101:00 , false
PASSED: ValidTime24HoursTest("01:00")
PASSED: ValidTime24HoursTest("02:00")
PASSED: ValidTime24HoursTest("13:00")
PASSED: ValidTime24HoursTest("1:00")
PASSED: ValidTime24HoursTest("2:00")
PASSED: ValidTime24HoursTest("13:01")
PASSED: ValidTime24HoursTest("23:59")
PASSED: ValidTime24HoursTest("15:00")
PASSED: ValidTime24HoursTest("00:00")
PASSED: ValidTime24HoursTest("0:00")
PASSED: InValidTime24HoursTest("24:00")
PASSED: InValidTime24HoursTest("12:60")
PASSED: InValidTime24HoursTest("0:0")
PASSED: InValidTime24HoursTest("13:1")
PASSED: InValidTime24HoursTest("101:00")

===============================================
    com.example.regex.Time24HoursValidatorTest
    Tests run: 15, Failures: 0, Skips: 0
===============================================


===============================================
example
Total tests run: 15, Failures: 0, Skips: 0
===============================================

Ссылка

Хотите узнать больше о регулярных выражениях? Настоятельно рекомендую эту классическую книгу - «Освоение регулярных выражений»

+
+