Regex, eller Regular Expression, er en sekvens av tegn som danner et søkemønster. Dette mønsteret kan brukes til å utføre en rekke oppgaver som blant annet validering, matching og erstatning. I Java er regex et viktig verktøy som brukes når du arbeider med strenger. I denne artikkelen skal vi se på hvordan du lager et regulært uttrykk for tid.
Oppgaven er å konstruere et regex-mønster som kan validere en konvensjonell 12-timers formattid, som '12:00 AM' eller '01:45 PM'.
public class Main { public static void main(String[] args) { // Test the pattern System.out.println("12:30 PM".matches("^((1[0-2]|0?[1-9]):([0-5][0-9])\s?([AaPp][Mm]))$")); // returns true } }
Dette mønsteret `^((1[0-2]|0?[1-9]):([0-5][0-9])\s?([AaPp][Mm]))$` er konstruert med følgende begrunnelse:
– `1[0-2]|0?[1-9]`: Denne delen av mønsteret sjekker for timen. Den gjenkjenner alle siffer fra 01-09 og 10-12. '0?' angir at innledende null er valgfri.
– `:` dette er et bokstavelig symbol som samsvarer med kolon i inndata.
– `[0-5][0-9]`: Denne delen ser etter referatet. Den godtar alle tall fra 00 til 59.
– `\s`: Matcher et mellomromstegn.
– `[AaPp][Mm]` – Denne delen sjekker for enten AM eller PM. Dette gjør at inngangen kan akseptere både små og store bokstaver.
Dette mønsteret sikrer til slutt en perfekt formatert 12-timers tid.