[regex] HH : MM 시간 형식 일치를위한 정규식

HH : MM 형식의 시간 일치를위한 정규 표현식을 원합니다. 여기 내가 가진 것이 있으며 작동합니다.

^[0-2][0-3]:[0-5][0-9]$

이것은 00:00부터 23:59까지의 모든 항목과 일치합니다.

그러나 00:00과 01:30뿐만 아니라 0:00과 1:00 등도 일치하도록 변경하고 싶습니다. 즉, HH : MM 및 H : MM과 일치하도록 가장 왼쪽 숫자를 선택적으로 만듭니다.

어떻게 변화시킬 아이디어가 있습니까? PHP뿐만 아니라 자바 스크립트에서도 작동해야합니다.



답변

원래 정규 표현식에 결함이 있습니다. 04:00예를 들어 일치하지 않습니다 .

이것은 더 잘 작동 할 수 있습니다 :

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


답변

시간에 대한 정규 표현식

  • HH : MM 12 시간 형식, 선행 0 (선택 사항)

    /^(0?[1-9]|1[0-2]):[0-5][0-9]\d$/
  • HH : MM 12 시간 형식, 선택적 선행 0, 필수 메리디언 (AM / PM)

    /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
  • HH : MM 24 시간, 선행 0

    /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
  • HH : MM 24 시간 형식, 선행 0 (선택 사항)

    /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
  • HH : MM : SS 24 시간 형식, 선행 0

    /(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)/

참조 및 데모


답변

위의 어느 것도 나를 위해 일하지 않았습니다. 결국 나는 사용했다 :

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

논리:

첫 번째 숫자 (시간)는 0과 19 사이의 숫자-> [0-1]?[0-9](한 자리 숫자 허용)
또는
20과 23 사이의 숫자입니다.2[0-3]

두 번째 숫자 (분)는 항상 00과 59 사이의 숫자입니다.-> [0-5][0-9](한 자리 숫자는 허용되지 않음)


답변

당신은이 하나를 24H를 사용할 수 있습니다, 초는 선택 사항입니다

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


답변

위험하지 않은 HH : MM이 가장 좋습니다.

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


답변

놀랍게도 실제로 0 : 0의 짧은 형식 자정에는 작동하지 않으며 00:00에는 작동하지 않는 일부가 있기 때문에 실제로 모든 것을 다루지 않는다는 것을 알았습니다.

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


답변

이 정규식을 사용할 수 있습니다.

^(2[0-3]|[01]?[0-9]):([1-5]{1}[0-9])$

00:00을 제외하려면이 표현식을 사용할 수 있습니다

^(2[0-3]|[01]?[0-9]):(0[1-9]{1}|[1-5]{1}[0-9])$

유효한 시간이 00:01-00:59 또는 0:01-23:59이므로 두 번째 표현식이 더 좋습니다. 필요에 따라 이들 중 하나를 사용할 수 있습니다.
정규식 링크