🔍 정규식 테스터
정규식 패턴을 테스트하고 매칭 결과를 확인합니다
정규식(Regular Expression)이란?
왜 필요한가요?
정규식은 문자열에서 특정 패턴을 찾거나 검증하기 위한 강력한 도구입니다. 이메일 주소, 전화번호, URL 등의 형식을 검증하거나, 로그 파일에서 특정 패턴을 추출하거나, 텍스트를 치환할 때 사용됩니다. 프로그래밍 언어 대부분이 정규식을 지원하며, 한 번 작성한 패턴을 여러 언어에서 유사하게 사용할 수 있습니다.
언제 사용하나요?
- 입력 검증: 이메일, 전화번호, 비밀번호 형식이 올바른지 확인
- 데이터 추출: 로그 파일이나 텍스트에서 IP 주소, 날짜 등 추출
- 텍스트 치환: 특정 패턴을 찾아 다른 문자열로 교체
- 파싱: HTML, XML 등에서 태그나 속성 값 추출
- URL 라우팅: 웹 프레임워크에서 URL 패턴 매칭
자주 사용하는 패턴 예시
이메일 주소
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$한국 전화번호
^01[0-9]-\d{3,4}-\d{4}$URL
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$IPv4 주소
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$주의사항
- ReDoS 공격: 복잡한 정규식은 특정 입력에서 극도로 느려질 수 있습니다. 입력 길이 제한을 두세요.
- 이스케이프: 특수문자(., *, +, ?, [, ], {, }, (, ), ^, $, |, \)는 \ 로 이스케이프해야 합니다.
- 그리디 vs 비그리디: .*는 최대한 많이 매칭하고, .*?는 최소한만 매칭합니다.
- 언어별 차이: JavaScript, Python, Java 등 언어마다 정규식 문법이 약간씩 다를 수 있습니다.
- HTML 파싱: 복잡한 HTML은 정규식보다 DOM 파서를 사용하는 것이 좋습니다.
정규식 플래그
| 플래그 | 설명 | 예시 |
|---|---|---|
g | 전역 검색 (모든 매칭 찾기) | /abc/g |
i | 대소문자 구분 안 함 | /abc/i |
m | 여러 줄 모드 | /^abc/m |
s | . 이 줄바꿈 포함 | /a.b/s |