유효한 날짜 포맷 확인
이전에 다뤘던 날짜 포맷 유효성 검사를 정규식으로 다시 표현해봤다.
https://muabow.tistory.com/326
소스코드
정말 간단한 정규식을 이용하여 패턴화 시켰다. 날짜 포맷은 여러 가지를 사용할 수 있지만 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의 기본을 충실히 하는 것이 중요하다고 생각한다.
끝.
'IT > programming' 카테고리의 다른 글
[C++] 프로그래머스, 더 맵게 (2) | 2022.02.16 |
---|---|
[C++] 프로그래머스, 전화번호 목록 (0) | 2022.02.16 |
[PYTHON] nested JSON 변환 / comparing two nested JSON (2) | 2022.01.27 |
[PYTHON] 유효한 날짜 포맷 확인 / datetime (1) | 2022.01.27 |
[C/C++] C언어 파일 생성/삭제 이벤트 모니터링 / inotify, event monitoring (1) | 2022.01.20 |
댓글