정규 표현식(Regular Expressions, Regex)은 문자열 내에서 특정한 규칙(패턴)을 가진 단어를 찾아내거나 추출, 치환하기 위한 강력한 도구입니다.
회원가입 폼에서 사용자가 입력한 이메일이 올바른 형식인지, 비밀번호에 숫자와 특수문자가 포함되었는지 검사할 때 필수적으로 사용됩니다. 자바스크립트에서는 슬래시(/)로 감싸서 리터럴을 생성하며, test(), match(), replace() 메서드와 찰떡궁합으로 사용됩니다.
console.log("=== 1. 정규표현식 매칭 (test) ===");
// 이메일 형식 검사 정규식
// ^ : 시작, [a-zA-Z0-9._-]+ : 영문/숫자/기호 여러개, @ : 골뱅이, $ : 끝
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log("test@example.com 유효성:", emailRegex.test("test@example.com")); // true
console.log("test@example 유효성:", emailRegex.test("test@example")); // false
console.log("\n=== 2. 문자열 치환 (replace) ===");
const dirtyString = "제가 🍎사과랑 🍌바나나를 샀는데, 🍎사과가 더 맛있네요.";
// /사과/g : 문자열 전체(global)에서 '사과'를 모두 찾아라
const cleanString = dirtyString.replace(/사과/g, "포도");
console.log("치환 결과:", cleanString);
console.log("\n=== 3. 숫자만 추출 (match) ===");
const textWithNumbers = "제 번호는 010-1234-5678 입니다. 나이는 25살이에요.";
// \d+ : 숫자(\d)가 1개 이상(+) 연속된 것 찾기, g: 모두 찾기
const extractedNumbers = textWithNumbers.match(/\d+/g);
console.log("추출된 숫자들:", extractedNumbers); // ['010', '1234', '5678', '25']