
정규 표현식(Regular Expression)은 텍스트에서 원하는 패턴을 검색하고 추출하는 강력한 도구입니다. 다양한 문자열 패턴을 정의하고 검색할 때 정규 표현식을 사용하면 효율적이고 강력한 해결책을 제공합니다. 정규 표현식의 주요 구성 요소와 특수 문자를 살펴보도록 하겠습니다!
|: 둘 중 하나를 나타냅니다. 예를 들어, A|B는 "A 또는 B"를 의미합니다.(): 그룹을 생성합니다. 그룹 내의 패턴은 한 단위로 취급됩니다.[]: 문자셋을 나타냅니다. 괄호 안의 어떤 문자라도 매치합니다.[^]: 부정 문자셋을 나타냅니다. 괄호 안의 어떤 문자가 아닐 때 매치합니다.(?:): 찾지만, 기억하지는 않는 그룹으로, 매치하지만 캡처하지 않습니다.?: 0번 또는 1번의 반복을 의미합니다. 즉, "없거나 있거나"를 나타냅니다.*: 0번 이상의 반복을 의미합니다. "없거나 있거나 많거나"를 나타냅니다.+: 1번 이상의 반복을 의미합니다. "하나 또는 많이"를 나타냅니다.{n}: 정확히 n번 반복을 의미합니다.{min,}: 최소 min번 이상의 반복을 의미합니다.{min,max}: 최소 min번 이상, 최대 max번까지의 반복을 의미합니다.\b: 단어 경계를 나타냅니다. 단어의 시작 또는 끝에서 매치합니다.\B: 단어 경계가 아님을 나타냅니다. \b의 반대 개념으로, 단어 경계가 아닌 경우 매치합니다.^: 문자열의 시작을 나타냅니다. 문자열이 시작하는 위치에서 매치합니다.$: 문자열의 끝을 나타냅니다. 문자열의 끝에서 매치합니다.\: 특수 문자가 아닌 문자를 나타냅니다. 예를 들어, \\는 역 슬래시 문자 \ 자체를 매치합니다..: 어떤 문자를 나타냅니다. 단, 줄바꿈 문자를 제외한 모든 문자와 매치됩니다.\d: 숫자 (digit)를 나타냅니다. 0부터 9까지의 숫자와 매치됩니다.\D: 숫자가 아님을 나타냅니다. 숫자가 아닌 문자와 매치됩니다.\w: 단어 (word) 문자를 나타냅니다. 알파벳, 숫자, 밑줄(_)과 매치됩니다.\W: 단어 문자가 아님을 나타냅니다. 단어 문자가 아닌 문자와 매치됩니다.\s: 공백 문자를 나타냅니다. 스페이스, 탭, 줄바꿈 등의 공백 문자와 매치됩니다.\S: 공백 문자가 아님을 나타냅니다. 공백 문자가 아닌 문자와 매치됩니다.const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
const email = "example@email.com";
if (emailPattern.test(email)) {
console.log("올바른 이메일 주소입니다.");
} else {
console.log("유효하지 않은 이메일 주소입니다.");
}
const phonePattern = /^\d{3}-\d{4}-\d{4}$/;
const phoneNumber = "010-1234-5678";
if (phonePattern.test(phoneNumber)) {
console.log("올바른 전화번호 형식입니다.");
} else {
console.log("유효하지 않은 전화번호 형식입니다.");
}
const urlPattern = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
const url = "https://www.example.com";
if (urlPattern.test(url)) {
console.log("올바른 URL 주소입니다.");
} else {
console.log("유효하지 않은 URL 주소입니다.");
}
const htmlText = "<p>This is <b>bold</b> text.</p>";
const cleanText = htmlText.replace(/<[^>]*>/g, "");
console.log(cleanText); // "This is bold text."
const text = "The price is $500.00";
const numbers = text.match(/\d+/g);
console.log(numbers); // ["500", "00"]