JavaScript

[JavaScript] 정규표현식

dearlhy 2025. 2. 2. 22:50

정규 표현식(Regular Expression, RegExp) 활용

정규 표현식(Regular Expression, RegExp)은 문자열에서 특정한 패턴을 찾고, 일치하는 부분을 검색·추출·치환하는 데 사용하는 표현 방식입니다. 프로그래밍에서 문자열을 다룰 때 매우 강력한 도구로 활용됩니다.

 

1. 정규 표현식의 기본 개념

정규 표현식은 특정한 규칙을 가진 문자열 패턴을 정의하는 표현식입니다.

예를 들어:

  • abc → 정확히 "abc" 문자열과 일치
  • a.c → 'a'와 'c' 사이에 아무 문자 하나가 있는 패턴
  • [0-9]+ → 하나 이상의 숫자로 이루어진 문자열
  • ^\d{3}-\d{2}-\d{4}$ → 000-00-0000 형식의 숫자

2. 정규 표현식 기초 문법

정규 표현식은 다양한 기호와 규칙을 사용하여 패턴을 정의합니다.

① 문자 패턴

기호 의미 예제 예제 결과
. 임의의 한 문자 (개행 제외) a.c "abc", "a_c" (일치)
[] 대괄호 내부의 문자 중 하나 [abc] "a", "b", "c" (일치)
[^] 대괄호 내부의 문자 제외 [^0-9] 숫자가 아닌 문자와 일치
- 범위 지정 [0-9] 0부터 9까지 숫자와 일치

② 수량자(반복 연산자)

기호 의미 예제 예제 결과
* 0번 이상 반복 a* "", "a", "aaa"
+ 1번 이상 반복 a+ "a", "aaa" (빈 문자열 X)
? 0번 또는 1번 존재 a? "", "a"
{n} 정확히 n번 반복 a{3} "aaa" (일치)
{n,} 최소 n번 이상 반복 a{2,} "aa", "aaa", "aaaa"
{n,m} n번 이상 m번 이하 반복 a{2,4} "aa", "aaa", "aaaa"

③ 위치 지정자(앵커)

기호 의미 예제 예제 결과
^ 문자열의 시작 ^abc "abc" (일치) / "xabc" (불일치)
$ 문자열의 끝 abc$ "xabc" (일치) / "abcx" (불일치)
\b 단어 경계 \bcat\b "cat" (일치) / "cats" (불일치)
\B 단어 경계가 아닌 경우 \Bcat\B "scattering" (일치)

④ 그룹과 캡처

기호 의미 예제 예제 결과
() 그룹화 (abc)+ "abc", "abcabc"
` ` OR (또는) `a
(?:...) 캡처하지 않는 그룹 (?:abc)+ "abcabc" (캡처 X)

3. 정규 표현식 실전 활용

정규 표현식은 다양한 언어(JavaScript, Python, Java 등)에서 지원되며, 주로 문자열 처리에 사용됩니다.

① 이메일 주소 검증

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

예제

  • test@example.com ✅
  • user_123@domain.co.kr ✅
  • invalid@domain,com ❌

② 전화번호 검증 (한국 기준)

^01[016789]-\d{3,4}-\d{4}$

예제

  • 010-1234-5678 ✅
  • 011-234-5678 ✅
  • 02-1234-5678 ❌

③ URL 검증

^(https?:\/\/)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,6}([\/\w.-]*)*\/?$

예제

④ 한글 포함 여부 검사

[가-힣]

예제

  • "안녕하세요" ✅
  • "Hello World" ❌

4. 정규 표현식 활용 예제 

const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const email = "test@example.com";

if (pattern.test(email)) {
    console.log("올바른 이메일 형식입니다.");
} else {
    console.log("잘못된 이메일 형식입니다.");
}

5. 정규 표현식 사용 시 주의할 점

  1. 과도한 사용 지양
    • 간단한 문자열 처리는 일반적인 문자열 메서드(split, replace, find 등)를 활용하는 것이 더 효율적일 수 있음.
  2. 정확한 패턴 작성
    • 너무 범위가 넓거나 협소하면 원치 않는 문자열도 매칭될 수 있음.
  3. 성능 고려
    • 긴 문자열을 다룰 때는 정규 표현식이 성능 저하를 초래할 수 있음.
    • new RegExp()를 사용하여 성능 최적화 가능.

6. 정리

정규 표현식의 주요 활용 분야

  • 문자열 검색/추출 (search, match)
  • 데이터 검증 (이메일, 전화번호, URL 등)
  • 데이터 치환 및 정리 (replace, sub)
  • 로그 분석 및 데이터 필터링

정규 표현식을 잘 활용하면 효율적인 문자열 처리가 가능하며, 다양한 프로그래밍 언어에서 강력한 도구로 사용됩니다.