본문 바로가기
Programming

JavaScript 정규 표현식

by 나무수피아는 지식의 가지를 뻗어가는 공간입니다. 2025. 9. 14.
반응형

🔍 자바스크립트 정규 표현식 (RegExp) 완벽 가이드

정규 표현식(Regular Expression, 줄여서 RegExp)은 문자열에서 특정 패턴을 찾거나, 교체하거나, 검증할 수 있게 해주는 강력한 도구입니다. 로그 분석, 이메일 검증, 웹 크롤링 등 다양한 분야에서 사용됩니다.

📌 1. 정규 표현식 기본 문법

자바스크립트에서는 두 가지 방식으로 정규 표현식을 생성할 수 있습니다.

// 방법 1: 리터럴 방식
const regex1 = /hello/;

// 방법 2: 생성자 방식
const regex2 = new RegExp("hello");

✔ 주요 메타 문자

  • . : 아무 문자 한 개
  • \d : 숫자 (0~9)
  • \w : 알파벳 + 숫자 + 언더스코어
  • \s : 공백 문자
  • [abc] : a, b, 또는 c 중 하나
  • [^abc] : a, b, c를 제외한 문자
  • a{3} : a가 정확히 3번 반복
  • a{3,} : a가 3번 이상 반복
  • a{3,5} : a가 3~5번 반복
  • a? : a가 0번 또는 1번 존재
  • ^ : 문자열 시작
  • $ : 문자열 끝

📌 2. 자주 쓰는 예제 패턴

  • 숫자만: /^\d+$/
  • 영문자만: /^[a-zA-Z]+$/
  • 이메일 주소: /^[\w.-]+@[\w.-]+\.\w+$/
  • 핸드폰 번호 (010-1234-5678): /^010-\d{4}-\d{4}$/
  • 우편번호 (5자리): /^\d{5}$/

📌 3. 메서드로 사용하는 정규 표현식

✔ test()

test()는 문자열이 정규식과 일치하는지 검사하며, 불리언을 반환합니다.

const regex = /\d+/;
console.log(regex.test("123")); // true
console.log(regex.test("abc")); // false

✔ match()

문자열에서 정규식에 일치하는 부분을 배열로 반환합니다.

const str = "My phone is 010-1234-5678";
const result = str.match(/\d{3}-\d{4}-\d{4}/);
console.log(result[0]); // "010-1234-5678"

✔ replace()

일치하는 문자열을 다른 문자열로 치환합니다.

const str = "apple banana apple";
const newStr = str.replace(/apple/g, "orange");
console.log(newStr); // "orange banana orange"

✔ split()

정규식을 기준으로 문자열을 배열로 분할합니다.

const str = "홍길동,김철수|이영희";
const arr = str.split(/[,|]/);
console.log(arr); // ["홍길동", "김철수", "이영희"]

📚 4. 정규 표현식 플래그

  • g : 전역 검색 (global)
  • i : 대소문자 구분 없음 (ignore case)
  • m : 여러 줄 검색 (multi-line)
/apple/gi

🎯 실전 예제: 아이디 유효성 검사

영문자 또는 숫자로 이루어진 5~12자의 아이디인지 검증하는 예제입니다.

function validateId(id) {
  const regex = /^[a-zA-Z0-9]{5,12}$/;
  return regex.test(id);
}

console.log(validateId("user123")); // true
console.log(validateId("us!"));     // false
반응형

'Programming' 카테고리의 다른 글

JavaScript 이벤트 루프와 태스크 큐  (93) 2025.09.16
JavaScript 실행 컨텍스트와 콜 스택  (95) 2025.09.15
JavaScript JSON과 AJAX  (90) 2025.09.13
JavaScript 에러 처리  (123) 2025.09.12
JavaScript import와 export  (108) 2025.09.11