정규 표현식(RegExp) 기초 문법

밤새·2023년 10월 18일

Programming 개념

목록 보기
4/6
post-thumbnail

정규 표현식(RegExp) 기초 문법

정규 표현식(Regular Expression)은 텍스트에서 원하는 패턴을 검색하고 추출하는 강력한 도구입니다. 다양한 문자열 패턴을 정의하고 검색할 때 정규 표현식을 사용하면 효율적이고 강력한 해결책을 제공합니다. 정규 표현식의 주요 구성 요소와 특수 문자를 살펴보도록 하겠습니다!

Groups and Ranges (그룹 및 범위)

  • |: 둘 중 하나를 나타냅니다. 예를 들어, A|B는 "A 또는 B"를 의미합니다.
  • (): 그룹을 생성합니다. 그룹 내의 패턴은 한 단위로 취급됩니다.
  • []: 문자셋을 나타냅니다. 괄호 안의 어떤 문자라도 매치합니다.
  • [^]: 부정 문자셋을 나타냅니다. 괄호 안의 어떤 문자가 아닐 때 매치합니다.
  • (?:): 찾지만, 기억하지는 않는 그룹으로, 매치하지만 캡처하지 않습니다.

Quantifiers (반복자)

  • ?: 0번 또는 1번의 반복을 의미합니다. 즉, "없거나 있거나"를 나타냅니다.
  • *: 0번 이상의 반복을 의미합니다. "없거나 있거나 많거나"를 나타냅니다.
  • +: 1번 이상의 반복을 의미합니다. "하나 또는 많이"를 나타냅니다.
  • {n}: 정확히 n번 반복을 의미합니다.
  • {min,}: 최소 min번 이상의 반복을 의미합니다.
  • {min,max}: 최소 min번 이상, 최대 max번까지의 반복을 의미합니다.

Boundary-type (경계)

  • \b: 단어 경계를 나타냅니다. 단어의 시작 또는 끝에서 매치합니다.
  • \B: 단어 경계가 아님을 나타냅니다. \b의 반대 개념으로, 단어 경계가 아닌 경우 매치합니다.
  • ^: 문자열의 시작을 나타냅니다. 문자열이 시작하는 위치에서 매치합니다.
  • $: 문자열의 끝을 나타냅니다. 문자열의 끝에서 매치합니다.

Character Classes (문자 클래스)

  • \: 특수 문자가 아닌 문자를 나타냅니다. 예를 들어, \\는 역 슬래시 문자 \ 자체를 매치합니다.
  • .: 어떤 문자를 나타냅니다. 단, 줄바꿈 문자를 제외한 모든 문자와 매치됩니다.
  • \d: 숫자 (digit)를 나타냅니다. 0부터 9까지의 숫자와 매치됩니다.
  • \D: 숫자가 아님을 나타냅니다. 숫자가 아닌 문자와 매치됩니다.
  • \w: 단어 (word) 문자를 나타냅니다. 알파벳, 숫자, 밑줄(_)과 매치됩니다.
  • \W: 단어 문자가 아님을 나타냅니다. 단어 문자가 아닌 문자와 매치됩니다.
  • \s: 공백 문자를 나타냅니다. 스페이스, 탭, 줄바꿈 등의 공백 문자와 매치됩니다.
  • \S: 공백 문자가 아님을 나타냅니다. 공백 문자가 아닌 문자와 매치됩니다.

예시

1. 이메일 주소 검색:

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("유효하지 않은 이메일 주소입니다.");
}

2. 전화번호 형식 검색 (예: "010-1234-5678"):

const phonePattern = /^\d{3}-\d{4}-\d{4}$/;
const phoneNumber = "010-1234-5678";

if (phonePattern.test(phoneNumber)) {
  console.log("올바른 전화번호 형식입니다.");
} else {
  console.log("유효하지 않은 전화번호 형식입니다.");
}

3. URL 검색:

const urlPattern = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/;
const url = "https://www.example.com";

if (urlPattern.test(url)) {
  console.log("올바른 URL 주소입니다.");
} else {
  console.log("유효하지 않은 URL 주소입니다.");
}

4. HTML 태그 제거:

const htmlText = "<p>This is <b>bold</b> text.</p>";
const cleanText = htmlText.replace(/<[^>]*>/g, "");

console.log(cleanText); // "This is bold text."

5. 숫자와 문자 추출:

const text = "The price is $500.00";
const numbers = text.match(/\d+/g);

console.log(numbers); // ["500", "00"]
profile
프로젝트를 통해 배운 개념이나 겪은 문제점들을 정리하고, 회고록을 작성하며 성장해나가는 곳입니다 😊

0개의 댓글