정규 표현식 빠르게 – JavaScript Regex (초급부터 전문가까지)

발행: (2025년 12월 18일 오후 01:29 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

번역을 진행하려면 전체 텍스트(코드 블록 및 URL 제외)를 제공해 주시겠어요? 텍스트를 받는 대로 요청하신 대로 한국어로 번역해 드리겠습니다.

정규 표현식이란?

정규 표현식 (regex) 은 텍스트와 매치하기 위해 사용되는 패턴입니다.

JavaScript에서 regex는 주로 문자열과 함께 사용됩니다:

const text = "hello world";
text.match(/world/); // ['world']

정규 표현식 패턴은 다음 구문으로 정의합니다:

/pattern/flags

예시

/hello/i
  • hello → 패턴
  • i → 플래그 (대소문자 구분 없음)

정규식 작동 방식 (정신 모델)

정규식은 왼쪽에서 오른쪽으로, 문자 하나씩 읽으며 작동합니다.

  1. 엔진이 문자열을 읽습니다.
  2. 패턴과 일치시키려 시도합니다.
  3. 일치하지 않거나 성공할 때까지 진행합니다.

미스터리가 아니라 규칙일 뿐입니다.

JavaScript에서 정규식 만들기

  1. 리터럴 구문 (가장 일반적)

    const regex = /abc/;
  2. 생성자 구문 (동적 패턴)

    const word = "abc";
    const regex = new RegExp(word);

    패턴이 동적으로 필요할 때에만 생성자를 사용하십시오.

JavaScript에서 흔히 사용하는 정규식 메서드

메서드설명예시
test()true / false 반환/abc/.test("abc123"); // true
match()매치된 결과 반환"abc123".match(/abc/);
replace()매치된 텍스트를 교체"hello world".replace(/world/, "JS");
search()매치된 인덱스를 반환"hello".search(/e/); // 1

문자와 리터럴

기본 매칭

/hello/   // matches "hello"

Regex는 기본적으로 대소문자를 구분합니다.

/hello/i  // matches "Hello", "HELLO", etc.

특수 문자 (메타 문자)

다음 문자들은 특별한 의미를 가집니다:

. ^ $ * + ? ( ) [ ] { } | \

문자 그대로 매치하려면 \\ 로 이스케이프하세요:

/\./  // matches a dot

문자 클래스 [ ]

Set에서 한 문자와 매치:

/[abc]/   // a OR b OR c
/[0-9]/   // any digit
/[a-z]/   // lowercase letters
/[A-Z]/   // uppercase letters

부정

/[^0-9]/  // NOT a digit

축약 문자 클래스

PatternMeaning
\d숫자 (0–9)
\D숫자가 아닌
\w단어 문자 (a–z, A–Z, 0–9, _)
\W단어가 아닌
\s공백 문자
\S공백이 아닌

예시

/\d+/.test("123"); // true

수량자 (몇 개?)

기호의미
*0개 이상
+1개 이상
?0 또는 1
{n}정확히 n
{n,}n 개 이상
{n,m}n 개와 m 개 사이

예시

/a*/    // "", "a", "aaaa"
 /a+/    // "a", "aaaa"
 /a{2}/  // "aa"

탐욕적 매칭 vs. 게으른 매칭

Regex는 기본적으로 탐욕적입니다.

"test".match(/.+/);
// matches "test"

게으른 버전

"test".match(/.+?/);
// matches ""

양화자 뒤에 ?를 추가하면 게으르게 만들 수 있습니다.

앵커 ^$

앵커는 위치와 일치하며, 문자와는 일치하지 않습니다.

/^hello/   // starts with "hello"
/world$/  // ends with "world"

검증에 유용합니다.

그룹 ( )

그룹을 사용하면 매치의 일부를 캡처할 수 있습니다.

const result = "2025-12-18".match(/(\d{4})-(\d{2})-(\d{2})/);
result[1]; // "2025" (연도)
result[2]; // "12"   (월)
result[3]; // "18"   (일)

캡처되지 않는 그룹

/(?:abc)+/

교체 | (OR)

/cat|dog/

cat 또는 dog 중 하나와 일치합니다.

플래그

Flag의미
g전역
i대소문자 구분 없음
m다중 행
s점이 줄바꿈과 일치
u유니코드
y스티키

예시

/hello/gi

Lookahead와 Lookbehind

양수 전방 탐색

/\d(?=px)/   // 'px' 뒤에 오는 숫자

부정 전방 탐색

/\d(?!px)/   // 'px' 뒤에 오지 않는 숫자

Lookbehind (현대 JS)

정규식을 마스터하면 텍스트가 지저분하지 않게 됩니다.
구조화되고, 그 기술은 영원히 큰 도움이 됩니다.

더 보려면 팔로우하세요! @mahmud‑r‑farhan
Contact: https://gravatar.com/floawd

Back to Blog

관련 글

더 보기 »

Regex 이해하기: 가장 쉬운 가이드

Regex Regular Expressions는 많은 개발자들에게 골칫거리를 주는 주제 중 하나입니다. 하지만 사실은: Regex는 어렵지 않으며, 단지 이해하면 됩니다.

JavaScript 101: 제어 흐름 시작하기

TL;DR - 애플리케이션에서 control flow는 코드가 올바른 경로를 따라 실행되도록 담당합니다. if, else if, else는 서로 다른 흐름을 실행하도록 도와줍니다.

JavaScript의 함수

함수란 무엇인가? 함수는 특정 작업을 수행하도록 설계된 코드 블록이다. 함수는 호출될 때만 실행된다. javascript function add { console.log'He...