본문으로 건너뛰기
튜토리얼

정규식 입문: 실용적인 생존 가이드

· 8 분 소요

정규식은 누군가 키보드를 마구 두드린 것처럼 보입니다. 하지만 구문을 익히면 개발자 도구 상자에서 가장 유용한 도구 중 하나가 됩니다.

이 글은 실제 예제로 입문시켜드립니다. 군더더기 없이.

문자: 기본 벽돌

정규식은 “무언가와 일치”하는 지시문입니다:

  • a — 문자 a
  • \d — 모든 숫자([0-9]와 동일)
  • \w — 모든 문자, 숫자 또는 밑줄
  • \s — 모든 공백 문자(스페이스, 탭, 줄바꿈)
  • . — 줄바꿈을 제외한 모든 문자

이를 조합하면 \d\d\d 같은 “세 자리 숫자” 패턴이 됩니다.

수량자: 하나만으론 부족

  • * — 0회 이상
  • + — 1회 이상
  • ? — 0회 또는 1회
  • {n} — 정확히 n회
  • {n,m} — n회 이상 m회 이하

예를 들어 \d{3}-\d{4}555-1234 같은 전화번호에 일치합니다.

앵커: 패턴을 위치에 고정

  • ^ — 문자열 시작
  • $ — 문자열 끝
  • \b — 단어 경계

^Error:는 “Error:“로 시작하는 줄에 일치 — 로그에서 오류를 잡을 때 아주 유용합니다.

실전 예제

이메일 검증(충분한 버전)

^[\w.+-]+@[\w-]+\.[\w.-]+$

완벽하지는 않지만 99%의 오타를 잡습니다.

URL에서 도메인 추출

https?://([^/]+)

캡처 그룹 ([^/]+)가 도메인을 잡습니다.

연속 공백을 하나로 정규화

\s+

단일 공백으로 교체합니다.

ISO 날짜 검증

^\d{4}-\d{2}-\d{2}$

형식만 검증(2026-13-99도 통과).

플래그: 스위치

  • g — 전역
  • i — 대소문자 무시
  • m — 여러 줄
  • s — 점이 줄바꿈에도 일치

/error/gi는 대소문자 구분 없이 모든 “error”를 찾습니다.

흔한 함정

  1. 탐욕 vs 게으름*는 기본적으로 탐욕. <.*>은 줄 전체를 먹어치웁니다. <.*?>을 쓰면 하나씩 일치.
  2. 이스케이프., (, [\., \(, \[로.
  3. HTML 파싱에 정규식 금지 — 전용 파서를 사용하세요.

연습장

정규식을 배우는 가장 좋은 방법은 자신의 코드에서 사용하는 것입니다. 로그 한 줄 파싱부터 시작하세요. 다음 프로젝트에서는 복잡한 패턴을 자연스럽게 쓰게 됩니다.

온라인으로 연습하고 싶다면 정규식 테스터를 사용해보세요 — 실시간 하이라이트와 캡처 그룹 시각화가 포함되어 있습니다.