이메일·전화·우편번호 같은 입력을 정규식으로 검증하는 실전 팁과 함정.
폼 검증에서 정규식은 형식이 규칙적인 입력에 잘 맞습니다. 전체 문자열이 형식과 일치하는지 보려면 양끝을 ^ 와 $ 로 고정해야 합니다. 앵커가 없으면 문자열 일부만 맞아도 통과되어 검증이 뚫립니다. HTML의 input pattern 속성에도 같은 정규식을 그대로 쓸 수 있습니다.
전화번호·우편번호·아이디처럼 자릿수와 문자 종류가 정해진 값은 문자 클래스와 수량자만으로 충분합니다. 다만 규칙을 지나치게 좁히면 국제전화, 새 우편번호 체계, 하이픈 유무 같은 유효한 변형을 막아버립니다. 실제 데이터의 다양성을 먼저 살펴보세요.
이메일은 정규식으로 완벽 검증하려 들지 마세요. 공식 규격(RFC 5322)은 지나치게 복잡해 실무용 정규식으로 재현하기 어렵습니다. @ 와 점을 포함하는지 정도만 느슨하게 확인하고, 진짜 유효성은 확인 메일 발송으로 검증하는 것이 정석입니다.
브라우저의 정규식 검증은 사용자 편의(UX)를 위한 것일 뿐, 최종 방어선이 아닙니다. 서버에서 반드시 다시 검증하고, 신뢰할 수 없는 입력에는 파국적 백트래킹(ReDoS)에 주의하세요(자료실의 성능 글 참고).