Stateless Tools


        

정규식 테스트가 특히 도움 되는 작업

입력값 검증 규칙 점검

이메일, 슬러그, 사번, 주문번호처럼 형식 제약이 있는 값을 프론트엔드나 백엔드에 넣기 전에 빠르게 시뮬레이션할 수 있습니다.

로그에서 ID 추출

에러 로그나 API 응답에서 특정 토큰, UUID, 경로 조각만 뽑아내는 패턴을 만들 때 매치 결과를 눈으로 확인하기 좋습니다.

치환 전 안전 점검

대량 치환이나 텍스트 정리 작업 전에 어떤 부분이 잡히는지 먼저 확인하면 실수로 과도하게 바뀌는 일을 줄일 수 있습니다.

정규식에서 자주 막히는 부분

g, i, m 플래그는 무엇이 다른가요?

g는 전체 검색, i는 대소문자 무시, m은 여러 줄 기준 앵커 동작에 영향을 줍니다. 필요에 따라 조합해서 확인해야 합니다.

패턴 오류가 왜 자꾸 나나요?

이스케이프 누락, 괄호 짝 불일치, 브라우저 자바스크립트 엔진이 지원하지 않는 문법 때문에 자주 발생합니다. 의심 구간을 작은 단위로 나눠 테스트하는 것이 빠릅니다.

이 페이지는 어떤 정규식 엔진을 쓰나요?

브라우저의 JavaScript 정규식 엔진을 기준으로 동작합니다. PCRE나 특정 서버 런타임과는 차이가 있을 수 있으니 배포 환경에서도 한 번 더 확인하는 것이 좋습니다.

정규식을 쓸 때

탐욕적 수량자가 예상보다 많이 먹습니다

.*는 가능한 한 길게 잡으므로 첫둘에서 .*는 전체를 한 번에 잡습니다. 최소로 잡으려면 .*?를 씁니다. 태그나 인용부호를 다룰 때 결과가 이상하면 여기부터 봅니다.

구현마다 문법이 다릅니다

자바스크립트, 파이썬, PCRE, POSIX가 룩비하인드나 유니코드 속성 지원에서 갈립니다. 여기서 되는 표현식이 서버 언어에서 그대로 동작하지 않을 수 있습니다. 옮길 때는 그 런타임에서 한 번 더 돌려보세요.

입력이 커지면 멈출 수 있습니다

중첩된 수량자(예: (a+)+)는 백트래킹이 폭발해 짧은 입력에도 사실상 멈춥니다. 사용자 입력을 정규식으로 검증하는 코드에서는 이것이 서비스 거부로 이어집니다. 복잡한 패턴은 문자열 함수로 나눠 처리하는 편이 안전합니다.

자주 만나는 오류

점(.)이 모든 걸 잡아버릴 때

.는 줄바꿈을 제외한 모든 문자입니다. 여기에 *가 붙으면 의도한 종료 지점을 지나쳐 끝까지 삼킵니다. .*? 로 바꾸거나 [^<]* 처럼 문자 집합을 좁히세요.

특수문자를 그대로 찾고 싶을 때

. + * ? ( ) [ ] { } | ^ $ \ 는 정규식 문법 문자입니다. 문자 그대로 찾으려면 앞에 백슬래시를 붙이세요. 예를 들어 소수점은 \. 입니다.

같은 정규식이 두 번째 호출에서 실패할 때

JavaScript에서 g 플래그가 붙은 정규식 객체는 lastIndex를 기억합니다. test나 exec를 반복 호출하면 이전 위치부터 검색합니다. 매번 새로 만들거나 lastIndex를 0으로 되돌리세요.

사용 순서와 입력 예시 더 보기

실제 입력과 결과

그룹으로 날짜 형식 바꾸기

입력

패턴  (\d{4})-(\d{2})-(\d{2})
치환  $3/$2/$1
대상  2026-08-11

결과

11/08/2026

탐욕적 수량자와 게으른 수량자

입력

대상  <b>one</b><b>two</b>
패턴A <b>.*</b>
패턴B <b>.*?</b>

결과

A  <b>one</b><b>two</b>  (전체를 한 번에)
B  <b>one</b>            (가장 짧게)

.*는 최대한 길게, .*?는 최대한 짧게 잡습니다. 태그나 인용부호를 다룰 때 결과가 갈리는 지점입니다.

함께 쓰면 좋은 도구