Comment valider le format Heure au format 24 heures avec une expression régulière

Comment valider l'heure au format 24 heures avec une expression régulière

Heure au format 24 heures Modèle d'expression régulière

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

La description

(               #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

Le format de l'horloge sur 24 heures commence par 0-23 ou 00-23 puis un point-virgule (:) et suivi de 00-59.

Exemple d'expression régulière 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();

      }
}

Format d'heure correspondant:

1. «01:00», «02:00», «13:00»,
2. «1:00», «2:00», «13:01»,
3. "23:59", "15:00"
4. "00:00", "0:00"

Le format de l'heure ne correspond pas:

1. «24:00» - l'heure est hors plage [0-23]
2. «12:60» - la minute est hors de portée [00-59]
3. «0: 0» - format invalide pour les minutes, au moins 2 chiffres
4. «13: 1» - format invalide pour les minutes, au moins 2 chiffres
5. «101: 00» - l'heure est hors plage [0-23]

Test unitaire - Time24HoursValidatorTest

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);
    }
}

Test unitaire - Résultat

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
===============================================

Référence

Vous voulez en savoir plus sur les expressions régulières? Je recommande vivement le livre classique et classique - «Maîtriser l'expression régulière»

+
+