목록으로
유틸리티

정규식 예제 7가지, 실무에서 바로 쓰는 패턴 모음

정규식 예제를 찾는 분들은 대부분 이메일이나 전화번호 검증, 특정 문자열 추출 같은 구체적인 작업을 앞두고 있습니다. 정규표현식(Regular Expression)은 문자열의 패턴을 표현하는 규칙으로, 한 줄의 표현식만으로 복잡한 검색과 치환을 처리할 수 있습니다. 이 글에서는 실무에서 가장 자주 쓰이는 패턴 7가지를 예제와 함께 정리했습니다.

정규식 기본 기호부터 짚고 가기

예제를 보기 전에 자주 등장하는 메타문자를 먼저 이해하면 패턴을 훨씬 빠르게 읽을 수 있습니다. 정규식은 결국 이 기호들의 조합이기 때문입니다.

  • . : 임의의 한 문자
  • \d : 숫자 한 자리 (0-9)
  • \w : 영문자, 숫자, 밑줄
  • \s : 공백 문자
  • * : 앞 문자가 0번 이상 반복
  • + : 앞 문자가 1번 이상 반복
  • {n,m} : n번 이상 m번 이하 반복
  • ^$ : 문자열의 시작과 끝
참고: 정규식에서 \(역슬래시)는 특수문자를 일반 문자로, 일반 문자를 특수 기능으로 바꾸는 역할을 합니다. 예를 들어 .은 임의의 문자이지만 \.은 실제 마침표를 의미합니다.

검증에 자주 쓰는 정규식 예제 5가지

회원가입이나 입력 폼에서 가장 많이 활용되는 패턴들입니다. 그대로 복사해 사용해도 동작하지만, 각 표현식이 어떤 규칙을 담고 있는지 이해하고 쓰는 것을 권장합니다.

용도정규식설명
이메일^[\w.-]+@[\w.-]+\.\w{2,}$아이디@도메인.최상위도메인 구조 확인
휴대폰 번호^01[0-9]-?\d{3,4}-?\d{4}$010, 011 등으로 시작, 하이픈 생략 허용
비밀번호^(?=.*[A-Za-z])(?=.*\d).{8,}$영문과 숫자 포함 8자 이상
URL^https?:\/\/[\w.-]+(\/\S*)?$http 또는 https로 시작하는 주소
날짜(YYYY-MM-DD)^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$월과 일의 범위까지 검증

비밀번호 예제에 등장하는 (?=...)는 전방탐색(lookahead)이라 부르며, 문자를 소비하지 않고 "뒤에 이런 패턴이 존재하는가"만 확인합니다. 덕분에 영문 포함과 숫자 포함이라는 두 조건을 동시에 검사할 수 있습니다.

팁: 이메일이나 URL 검증은 표준이 매우 복잡해서 완벽한 정규식은 사실상 불가능합니다. 실무에서는 위 수준의 간단한 패턴으로 1차 형식만 걸러내고, 실제 유효성은 인증 메일 발송 같은 방식으로 확인하는 것이 안전합니다.

추출과 치환에 쓰는 정규식 예제 2가지

검증뿐 아니라 텍스트에서 원하는 값을 뽑아내거나 일괄 변경할 때도 정규식이 강력합니다.

  1. 괄호 안 텍스트 추출: \(([^)]+)\) 패턴은 소괄호 안의 내용을 그룹으로 잡아냅니다. ([^)]+) 부분이 캡처 그룹이 되어 괄호를 제외한 알맹이만 얻을 수 있습니다.
  2. 연속 공백 정리: \s+ 를 찾아 하나의 공백으로 치환하면 들쭉날쭉한 공백과 줄바꿈을 깔끔하게 정돈할 수 있습니다.

예를 들어 로그 파일에서 IP 주소만 모으거나, 문서에서 해시태그를 전부 수집하는 작업도 같은 원리로 처리합니다. 이런 패턴을 작성하다 보면 의도대로 매칭되는지 즉시 확인하고 싶을 때가 많은데, 이럴 때 정규식 테스터에 표현식과 샘플 텍스트를 넣어 보면 어떤 부분이 매칭되는지 색으로 바로 확인할 수 있어 디버깅 시간을 크게 줄일 수 있습니다.

정규식은 한 번 익혀 두면 거의 모든 프로그래밍 언어와 텍스트 에디터에서 그대로 통용되는, 투자 대비 효율이 가장 높은 기술 중 하나입니다.

자주 하는 실수와 주의할 점

정규식은 강력한 만큼 작은 실수가 큰 차이를 만듭니다. 다음 세 가지는 특히 자주 마주치는 함정입니다.

  • 탐욕적 매칭: .* 는 기본적으로 가능한 한 길게 매칭합니다. 최소 범위만 잡고 싶다면 .*? 처럼 물음표를 붙여 게으른 매칭으로 바꿔야 합니다.
  • 앵커 누락: ^$ 를 빼먹으면 문자열 일부만 맞아도 통과합니다. 전체 형식을 검증할 때는 반드시 양쪽 앵커를 붙입니다.
  • 언어별 차이: 자바스크립트, 파이썬, 자바는 대부분 호환되지만 전후방탐색이나 유니코드 처리에서 미묘한 차이가 있습니다.
주의: (a+)+ 같은 중첩 반복 패턴은 특정 입력에서 매칭 시간이 기하급수적으로 늘어나는 ReDoS(정규식 서비스 거부) 취약점을 만들 수 있습니다. 사용자 입력을 검증하는 정규식은 가능한 한 단순하게 유지하고, 중첩 수량자 사용을 피해야 합니다.

위 예제들을 기반으로 본인의 데이터에 맞게 조금씩 변형해 가다 보면, 정규식이 더 이상 외계어처럼 느껴지지 않고 일상적인 도구로 자리 잡게 됩니다.

자동차 수리가 필요하신가요?

대전 사고차 수리 전문 - 남대전자동차공업사

무료 견적받기