본문 바로가기
IT/programming

[PYTHON] 유효한 날짜 포맷 확인 / 정규식, re

by 어느해겨울 2022. 1. 28.

유효한 날짜 포맷 확인

 

이전에 다뤘던 날짜 포맷 유효성 검사를 정규식으로 다시 표현해봤다.

 

https://muabow.tistory.com/326

 

[PYTHON] 유효한 날짜 포맷 확인 / datetime

유효한 날짜 포맷 확인 특정 패턴을 갖는 날짜 포맷을 확인하는 소스코드이다. 개인적으로는 별도의 모듈을 사용한, 그것도 try-except를 사용한 구조를 무척 좋아하지 않기 때문에 사용하던 프

muabow.tistory.com


소스코드

정말 간단한 정규식을 이용하여 패턴화 시켰다. 날짜 포맷은 여러 가지를 사용할 수 있지만 API의 정적인 format을 해치지 말아야 하기 때문에 다른 format 은 배제한다.

정규식에서 d는 digit를 의미하며 소문자는 string을 사용하지 않는 only digit이다. 그리고 {}는 자리갯수이기 때문에 각 format에 맞는 숫자만큼 명시해주면 된다.

import re

def is_valid_format_date(_date) :
    regex = r'\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}'
    return  bool(re.match(regex, _date))


print(is_valid_format_date("2022-01-27 16:24:00"))
print(is_valid_format_date("01-27-2022 16:24:00"))
print(is_valid_format_date("2022-01-27 16:2400"))

 

결과

True
False
False

이전 datetime 으로 날짜 포맷 유효성 검사와 결과가 같다.

훨씬 짧은 코드로 동일한 결과를 냈다.

 

물론 포맷의 유효성만 검증하기 때문에 세팅이 가능한 시간인지 여부는 알 수 없다. 이 역시 정규식으로 패턴화 시킬 수 있지만 형태만 잡고 마무리를 짓는다.

 

앞으로 진행할 방향은 많은 attributes의 각 key의 format만 검증하는 wrapper interface를 만드는 것이 목적이기 때문에 format의 validation 까지만 하고 value validation 은 end point에서 하는 게 맞다.

 

정규식은 활용하기 나름이다. 많은 패턴을 한번에 검출하는 것도 좋지만 one-function/one-output의 기본을 충실히 하는 것이 중요하다고 생각한다.

 

끝.

 

 

댓글