2014-03-07 2 views
1

PHP에서 몇 시간 동안 정규식이 필요합니다. ereg를 사용하고 있습니다. 선행 제로없이 1-23을 받아 들일 필요가 있습니다.정규 표현식 구문

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

내가 사용하고있는 것이지만 어디에서 실수인지 찾을 수 없습니다.

+1

당신은'ereg' 대신'preg'을 사용하고 싶을 것입니다. 'ereg'는 "이 함수는 PHP 5.3.0에서 사용이 권장되지 않았으므로이 기능을 사용하지 않는 것이 좋습니다." – Quixrick

답변

2

변경 사항 (|)은 주변 그룹의 모든 항목 또는 그룹이 아닌 경우 전 세계에 적용됩니다. 따라서 귀하의 패턴에서 ^은 첫 번째 패턴에만 적용되고 $은 마지막 패턴에만 적용됩니다. 즉, 패턴은 1에서 9 사이의 숫자로 시작하고 1부터 0에서 9까지의 숫자 또는 2와 0에서 3 사이의 숫자로 끝나는 문자열과 일치합니다.

시도해보십시오. 당신이 시간에 필요한 경우,

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

또는이 : 당신의 패턴이 더 같이해야하므로, 00:00

또한
^([1-9]|1[0-9]|2[0-3])$ 

24-hour time 시작주의 : 하나 개의 그룹에서 다른 옵션을 넣어 2 자리 수 :

^([01][0-9]|2[0-3])$ 
+0

좋은 답변입니다. :) – Quixrick

+0

감사. 다시 무언가가 잘못 될 때마다 괄호를 사용하면됩니다. – user3319891

+0

@ user3319891 글쎄, 더 이상 문제를 일으킬 수는 없다. 올바른 방법으로 사용하는 것을 잊지 마십시오. –