정규식 테스터 | 정규표현식 매칭 여부 즉시 확인

정규식 하나 만들어놓고 “이게 정말 원하는 문자열만 잡아내는 게 맞나” 싶어서 콘솔 열고 테스트해본 적 다들 있으실 겁니다. 이메일 형식 검사 하나 짜는 데도 특수문자 케이스 하나 놓쳐서 배포하고 나서야 버그로 발견되는 경우가 종종 있죠. 아래 도구에 정규식 패턴과 테스트할 문자열을 넣으면 매칭 여부와 매칭된 부분을 바로 하이라이트로 보여줍니다.

정규식 테스터 사용해보기

정규식 패턴과 테스트 문자열을 넣고 플래그를 선택한 뒤 버튼을 누르면 됩니다. 매칭된 부분은 노란색으로 표시되고, 아래에 각 매칭의 위치와 캡처 그룹까지 정리해서 보여줍니다.

※ 브라우저 자바스크립트(ECMAScript) 정규식 엔진 기준으로 동작합니다. PHP(PCRE), Python(re) 등 다른 언어의 정규식 엔진과는 일부 문법(전방탐색, 유니코드 처리 등)이 다를 수 있습니다.

정규식 기본 문법 알아보기

정규식은 문자열에서 특정 패턴을 찾기 위한 규칙입니다. 처음 보면 암호문 같지만 몇 가지 기호의 의미만 알면 대부분의 패턴은 읽을 수 있습니다.

자주 쓰는 메타문자

.은 줄바꿈을 제외한 아무 문자 하나, \d는 숫자 하나, \w는 영문·숫자·언더스코어 하나, \s는 공백 문자 하나를 의미합니다. ^는 문자열의 시작, $는 문자열의 끝을 나타냅니다.

개수를 지정하는 기호

*는 0개 이상, +는 1개 이상, ?는 0개 또는 1개를 의미합니다. {2,4}처럼 중괄호를 쓰면 최소·최대 개수를 직접 지정할 수 있습니다. 위 테스터의 기본 예시인 \d{2,3}-\d{3,4}-\d{4}는 국번이 2~3자리, 다음 번호가 3~4자리, 마지막이 4자리인 전화번호 형식을 찾는 패턴입니다.

그룹과 캡처

괄호 ( )로 묶으면 해당 부분을 그룹으로 캡처할 수 있습니다. 예를 들어 (\d{3})-(\d{4})처럼 쓰면 국번과 뒷자리를 각각 따로 뽑아낼 수 있어서, 전체 매칭 문자열뿐 아니라 특정 부분만 추출하고 싶을 때 유용합니다. 이 테스터도 매칭 결과에 그룹이 있으면 함께 표시해줍니다.

플래그(g, i, m, s)는 뭘 의미할까

정규식 뒤에 붙는 플래그는 검색 방식을 바꿔줍니다.

g 플래그 (전역 검색)

문자열에서 처음 매칭되는 것 하나만 찾고 멈추지 않고, 끝까지 모든 매칭을 찾습니다. 여러 개를 한 번에 찾아야 할 때는 거의 필수로 켜두는 옵션입니다.

i 플래그 (대소문자 무시)

영문 대소문자를 구분하지 않고 매칭합니다. hello라는 패턴에 이 플래그를 켜면 Hello, HELLO도 모두 매칭됩니다.

m 플래그 (여러 줄 모드)

기본적으로 ^$는 문자열 전체의 시작과 끝만 가리키는데, m 플래그를 켜면 각 줄의 시작과 끝으로 의미가 바뀝니다. 여러 줄로 된 텍스트에서 줄 단위로 패턴을 찾을 때 필요합니다.

s 플래그 (dotAll)

기본적으로 .은 줄바꿈 문자는 포함하지 않는데, s 플래그를 켜면 줄바꿈까지 포함해서 매칭합니다. 여러 줄에 걸친 텍스트 블록 전체를 하나의 패턴으로 찾고 싶을 때 유용합니다.

자주 쓰는 정규식 예시

실무에서 반복적으로 쓰게 되는 패턴 몇 가지를 정리했습니다. 테스터에 그대로 넣고 다양한 입력값으로 시험해보시면 이해가 빠릅니다.

이메일 형식 검사

^[\w.-]+@[\w-]+\.[a-zA-Z]{2,}$ 형태를 많이 씁니다. 다만 실제 이메일 규격(RFC 5322)은 훨씬 복잡해서, 완벽한 검증이 필요하다면 정규식만으로는 한계가 있고 인증 메일 발송 같은 방식과 함께 쓰는 게 안전합니다.

전화번호 형식 검사

^0\d{1,2}-\d{3,4}-\d{4}$ 형태로 지역번호와 휴대전화 번호를 함께 검사할 수 있습니다. 하이픈 없이 숫자만 입력받는 경우라면 하이픈 부분을 -?로 바꿔서 있어도 없어도 매칭되게 만들 수 있습니다.

정규식 테스트할 때 알아두면 좋은 점

정규식은 조금만 잘못 써도 의도와 다르게 동작하기 쉬운데, 특히 *+를 남발하면 예상보다 훨씬 넓은 범위가 매칭되는 경우가 많습니다. 코드에 바로 넣기 전에 이런 테스터로 정상 케이스뿐 아니라 일부러 이상한 값도 넣어보고 매칭이 안 되는 것까지 확인해보는 습관을 들이면 나중에 겪을 버그를 꽤 줄일 수 있습니다.

자주 묻는 질문

매칭이 하나도 안 잡히는데 패턴이 틀린 건지 문자열이 틀린 건지 모르겠어요.

패턴을 단순하게 줄여가면서 테스트해보는 게 가장 빠릅니다. 전체 패턴 대신 일부만 넣어보고 매칭되는지 확인하면서 범위를 넓혀가면 어느 부분에서 문제가 생기는지 찾기 쉽습니다.

정규식이 잘못됐다는 오류가 뜨는데 왜 그런가요?

괄호나 대괄호가 짝이 안 맞거나, 이스케이프 처리가 안 된 특수문자가 있을 때 자주 발생합니다. 오류 메시지에 표시되는 위치를 참고해서 해당 부분을 확인해보세요.

다른 프로그래밍 언어에서도 똑같이 동작하나요?

기본적인 문법은 비슷하지만 언어나 라이브러리마다 세부 문법 차이가 있습니다. 이 테스터는 자바스크립트 정규식 엔진을 기준으로 하니, 다른 언어에서 쓸 패턴이라면 해당 언어 문서로 한 번 더 확인하시는 걸 권합니다.

정규식은 몇 번 손에 익으면 텍스트 처리 작업 시간을 크게 줄여주는 도구입니다. 새로운 패턴을 만들 때마다 이 테스터에 먼저 돌려보고 코드에 넣는 습관을 들이면 배포 후 발견되는 자잘한 버그를 많이 줄일 수 있습니다.

Leave a Comment