EVERYDAY TOOLS GUIDE
정규식 테스트 가이드: 경계 조건과 과도한 역추적 피하기
짧은 예제에서 맞는 정규식도 실제 긴 입력에서는 틀리거나 브라우저를 오래 멈추게 할 수 있습니다. 결과와 실행 비용을 함께 검토하세요.
전체 일치인지 부분 검색인지 정하세요
문자열 전체가 형식에 맞아야 한다면 시작과 끝을 나타내는 앵커가 필요할 수 있습니다. 여러 줄 모드, 대소문자 무시, 전역 검색 플래그는 결과의 개수와 경계를 바꾸므로 실제 실행 환경과 같은 옵션으로 시험하세요.
정상 사례만으로는 부족합니다
정상 값, 한 글자가 빠진 값, 빈 문자열, 매우 긴 값, 예상하지 못한 유니코드 문자를 각각 넣어 보세요. 캡처 그룹을 후속 코드에서 사용한다면 그룹 순서와 선택적 그룹이 비어 있을 때의 결과도 확인해야 합니다.
중첩된 모호한 반복을 피하세요
(a+)+처럼 반복 안에 또 반복이 있고 여러 경로로 같은 문자를 소비할 수 있으면, 일치하지 않는 긴 문자열에서 역추적이 폭증할 수 있습니다. 입력 길이를 제한하고 구체적인 문자 클래스, 앵커, 단순한 반복으로 바꿀 수 있는지 검토하세요.
복잡한 형식은 전용 파서를 사용하세요
HTML, 완전한 URL, 이메일 표준 전체를 하나의 정규식으로 정확히 처리하기는 어렵습니다. 정규식은 기본적인 모양을 걸러내는 데 사용하고, 실제 유효성은 표준 파서나 확인 메일처럼 목적에 맞는 절차로 검증하세요.
배포 전 점검
- 플래그와 앵커가 실행 환경과 같은지 확인합니다.
- 긴 실패 입력에서 응답 시간이 급증하지 않는지 확인합니다.
- 사용자 입력 길이에 상한을 둡니다.
- 정규식만으로 보안 검증을 끝내지 않습니다.