PHP에서 MM/DD/YYYY 날짜 정규식 만들기

Subodh Poudel 2022년1월22일
PHP에서 MM/DD/YYYY 날짜 정규식 만들기

이 튜토리얼은 PHP에서 mm/dd/yyyy 날짜 형식에 대한 정규식을 만드는 방법을 보여줍니다.

PHP에서 MM/DD/YYYY 날짜 정규식 만들기

정규식을 사용하여 표현식에 적용된 규칙에 따라 사용자 입력의 유효성을 검사할 수 있습니다. 정규식을 사용하여 모든 입력의 유효성을 검사할 수 있으며 정규식을 사용하여 mm/dd/yyyy 날짜 형식의 유효성도 검사할 수 있습니다.

정규식을 만들어 변수에 저장할 수 있습니다. preg_match() 함수를 사용하여 정규식으로 임의의 날짜 형식 입력을 테스트합니다.

날짜 형식 mm/dd/yyyy에 대한 정규식 패턴은 아래와 같습니다. 우리는 그것에 대해 자세히 논의 할 것입니다.

~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~

정규식 패턴 주위에는 항상 올바른 구분 기호가 있어야 합니다. 여기서 ~ 기호는 패턴을 둘러싼 구분 기호입니다.

다음으로 mm/dd/yyyy 형식으로 월 형식을 작성해야 합니다.

월은 형식에서 01-12로 표시됩니다. 따라서 월의 첫 번째 숫자는 0 또는 1이 될 수 있으므로 01-09부터 시작하는 월에 대해 0[1-9]를 씁니다. 괄호 안의 1-90 뒤에 쓰여진 숫자를 나타냅니다.

마찬가지로, 1로 시작하는 월에 대해 10, 1112만 쓸 수 있습니다. 따라서 1의 대괄호 안에 0121[012]로 작성했습니다.

|를 사용합니다. 논리적 OR을 달성하기 위한 기호. 따라서 규칙을 (0[1-9]|1[012])로 구분하는 데 사용합니다.

마지막으로 패턴을 괄호로 묶어 섹션의 끝을 나타냅니다.

다음으로 mm/dd/yyyy 형식으로 구분 기호에 대한 규칙을 설정해야 합니다. 위의 패턴은 -, /. 기호의 구분 기호를 허용합니다.

이제 우리는 며칠 동안의 패턴을 씁니다. 요일은 1-30이므로 01-090[1-9]로, 10-2912[0-9]로, 그리고 일 30-313[01]으로 쓸 수 있습니다.

mm/dd/yyyy 형식의 날짜 이후 구분 기호에 대해 동일한 규칙을 사용합니다.

연도의 처음 두 자리 숫자로 19|20을 썼습니다. 이는 연도가 1920에서만 시작할 수 있음을 의미합니다. 19|20 다음에 \d\d 패턴을 사용하여 19 또는 20 뒤에 오는 두 자리를 나타냅니다.

이것이 위의 정규식이 작동하는 방식입니다. 이제 위의 정규식을 사용하여 일부 테스트 날짜 형식을 확인할 수 있습니다.

이를 위해 $reg 변수를 만들고 위에서 작성한 정규식을 저장합니다. 다음으로 $dates 배열을 만들고 이러한 임의의 날짜 형식을 저장합니다.

['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865']

그런 다음 foreach 루프를 사용하여 $dates 변수를 $date로 루프합니다. preg_match() 함수를 사용하여 $date 변수를 $reg 변수와 비교합니다.

이렇게 하면 테스트 입력이 mm/dd/yyyy 형식의 정규식 패턴을 준수하는지 확인할 수 있습니다.

예제 코드:

$reg = '~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~';

$dates =['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865'] ;
foreach($dates as $date){
 if(!preg_match($reg, $date)) {
 echo 'the date format '.$date.' is incorrect'."<br>"; 
 } else{
 echo 'the date format '.$date.' is correct'."<br>";
 } 
}

출력:

the date format 03/22/2021 is correct
the date format 22/22/2021 is incorrect
the date format 03\22\2021 is incorrect
the date format 03-22-2021 is correct
the date format 03/22/1865 is incorrect

여기에서 첫 번째 형식은 모든 규칙을 따릅니다. 월은 22가 될 수 없으므로 두 번째 형식은 올바르지 않습니다.

세 번째는 \ 구분 기호를 지정하지 않았기 때문에 올바르지 않습니다. - 구분 기호를 지정했으므로 네 번째 날짜가 정확합니다. 연도는 마지막의 1800년대이므로 올바르지 않습니다.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

관련 문장 - PHP Date

관련 문장 - PHP Regex