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


165

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뿐만 아니라 자바 스크립트에서도 작동해야합니다.


15
실제로 원래 정규 표현식은 유효한 모든 시간 값과 일치하지 않습니다 (예 : 17:00
David Clarke

답변:


366

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

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

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

45
이 정규식은 선행 0이없는 시간입니다. 선행 0의 시간에 대한 RegExp는 다음과 ^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
같습니다

15
@ SergO는 그의 답변을 더 자세히 읽으십시오. 그의 대답은 선행 0과 미포함입니다.
Alexander

11
약간 짧은 형식은 다음과 같습니다^(?:\d|[01]\d|2[0-3]):[0-5]\d$
Billy Jo

2
C #에서도 잘 작동합니다.
Richard Ev

10
@SergO는 ^ (0 [0-9] | 1 [0-9] | 2 [0-3])이되어서는 안됩니다 : [0-5] [0-9] $?
Martin

57

시간에 대한 정규 표현식

  • 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)/

참조 및 데모


4
감사합니다! 이 답변은 맨 위에 있어야합니다.
Marc

어떤 이유로 HH : MM 24 시간을 0 으로하지 ^([0-2][0-3]|[0-1][0-9]):[0-5][0-9]+$않는가?
Macovei Vlad

대답의 정규식이 잘 작동하기 때문입니다. 그리고 당신이 논평 한 것도 작동합니다. 그들 중 하나를 자유롭게 사용하십시오. :)
Niket Pathak

위의 정규 표현식으로 12 시간 (am / pm 사용) 문자열과 일치하는 사람들의 경우 정규 표현식에 대해 "13:00 PM"을 테스트하면 문자열의 "3:00 PM"부분이 다음과 같으므로 일부 값이 반환됩니다. 유효한. 다음 if 문을 사용하여 문제를 해결했습니다. let res = value.match (regex); if (res && res [0] === value) doSomething ();
Taha Rehman Siddiqui

49

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

^([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](한 자리 숫자는 허용되지 않음)


8
첫 번째 대괄호 안에 대시가 필요하지 않고 [01]잘 작동합니다.)
Czechnology

3
여기에만 (선택 앞에 0 포함) 12 시간의 시간을 허용하도록 개정이 답이다 :^(0?[1-9]|1[0-2]):[0-5][0-9]$
rgbflawed

^([0-1][0-9]|2[0-3]):[0-5][0-9]$0을 이끌 기
Manan Mehta

8

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

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

4

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

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

이 단축 될 수 ^([0-1]\d|2[0-3]):[0-5]\d$있습니까?
AlbinoDrought 1

3

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

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

2

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

^(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이므로 두 번째 표현식이 더 좋습니다. 필요에 따라 이들 중 하나를 사용할 수 있습니다. 정규식 링크


첫 번째 표현식은 00 : 05를 허용하지 않습니다 . 하지만 고마워 내가 찾던 검증으로 연결됩니다.
JazZ

2

성냥:

2 : 9
2:09
2:59
02 : 9
02:09
02:59
23:59

그걸 써:

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

2 : 9 또는 02 : 9는 몇시입니까?
vs97

예를 들어 C #에는 DateTime 개체를 문자열로 변환하는 옵션이 너무 많습니다. DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1); Console.WriteLine(date1.ToString("H:mm:ss", CultureInfo.InvariantCulture)); // Displays 6:09:01 . 자세한 내용은 링크
Pedram Ahmadpour

1

가장 왼쪽에있는 비트 옵션을 물었을 때 가장 왼쪽에있는 비트와 오른쪽에있는 비트를 모두 선택했습니다.

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

와 일치

0:0 
00:00
00:0 
0:00
23:59
01:00
00:59

라이브 링크는 여기에 있습니다


0

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

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

0

알리다

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

public boolean validate(final String time) {
    pattern = Pattern.compile(TIME24HOURS_PATTERN);
    matcher = pattern.matcher(time);
    return matcher.matches();
}

이 메소드는 문자열이 정규식과 일치 할 때 "true"를 리턴합니다.


0

의 Manish M Demblani의 기여에 대한 약간의 수정 은 오전 4시를 처리합니다 (응용 프로그램에 필요하지 않기 때문에 초 섹션을 제거했습니다)

^(([0-1]{0,1}[0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[1-9]|1[0-2])(:|\.)[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[0-9]|1[0-9]|2[0-3])(:|\.)[0-5][0-9]))$

핸들 : 오전 4시 오전 4시 4:00 오전 4시 오후 4시 30 분 등


1
AM|am|aM|Am|PM|pm|pM|Pm=[AaPp][Mm]
Ed Morton

0

아래 정규식은 hh : mm 형식의 유효성을 검사하는 데 도움이됩니다.

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

-1

광산은 :

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

이것은 훨씬 짧습니다

여러 예제로 테스트했습니다.

시합:

  • 00:00
  • 7:43
  • 07:43
  • 19:00
  • 18:23

그리고 25:76 등과 같은 잘못된 인스턴스와 일치하지 않습니다 ...


09:30일치하지 않음
Green

귀하의 예 00:00 및 07:43이 일치하지 않습니다.
Christiaan Westerbeek

-1

다음을 시도해 볼 수 있습니다

^\d{1,2}([:.]?\d{1,2})?([ ]?[a|p]m)?$

다음 패턴을 감지 할 수 있습니다.

2300 
23:00 
4 am 
4am 
4pm 
4 pm
04:30pm 
04:30 pm 
4:30pm 
4:30 pm
04.30pm
04.30 pm
4.30pm
4.30 pm
23:59 
0000 
00:00

-1

사용자 지정 타임 스탬프를 찾기 위해 구축 한이 마스터 풀 타임 스탬프 탐지기 정규식을 확인하십시오 .

8:30-9:40
09:40-09 : 50
09 : 40-09 : 50
09:40 - 09 : 50
08:00to05:00
08 : 00to05 : 00
08:00 to 05:00
8am-09pm
08h00 till 17h00
8pm-5am
08h00,21h00
06pm untill 9am

시간에 숫자가 포함되어 있으면 더 많이 픽업됩니다.


1
RegExr requires a modern browser. Please update your browser to the latest version and try again.... 심지어 그것을 볼 수 없습니다 ... :-/
Martin Tournoij

-3

다음을 시도하십시오

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

참고 : 자바 스크립트 정규식 엔진을 가정하고있었습니다. 그것과 다른 경우 알려주십시오.


-3

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

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

내가 만든 수정 만 맨 왼쪽 숫자는 선택 사항입니다. 정규식의 나머지 부분은 동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.