IT & 웹개발

JavaScript에서 정규표현식(Regex) 활용법

kkwako 2025. 4. 3. 18:35

1. 개요

**정규표현식(Regular Expression, Regex)**은 문자열에서 특정 패턴을 찾거나 변경할 때 사용하는 강력한 도구다. 정규표현식을 사용하면 복잡한 문자열 검증, 데이터 추출, 변환 작업을 간결하게 처리할 수 있다.

JavaScript에서도 RegExp 객체를 이용해 정규표현식을 다룰 수 있으며, 문자열 검색 및 치환에 유용하게 활용된다. 이번 글에서는 JavaScript에서 정규표현식을 다루는 방법과 실전 활용 예제를 살펴보겠다.


2. 정규표현식 기본 개념

(1) 정규표현식의 기본 문법

정규표현식은 /패턴/플래그 형식으로 작성된다.

javascript
복사편집
const regex = /hello/; // 'hello'라는 문자열을 찾는 정규표현식 const text = "hello world"; console.log(regex.test(text)); // true
  • /hello/ → 정규표현식 패턴
  • test() → 문자열에서 해당 패턴이 있는지 확인

(2) 정규표현식 플래그(Flags)

플래그설명
g 전역 검색 (첫 번째 일치 후에도 계속 검색)
i 대소문자 구분 없이 검색
m 여러 줄 검색 (줄바꿈 문자 포함)
s .가 줄바꿈 문자까지 포함하도록 변경
u 유니코드 문자 지원
y 현재 위치에서만 검색
javascript
복사편집
const text = "Hello hello HeLLo"; console.log(/hello/g.test(text)); // true (전역 검색) console.log(/hello/i.test(text)); // true (대소문자 무시) console.log(text.match(/hello/gi)); // ["Hello", "hello", "HeLLo"]
 
JavaScript에서 정규표현식(Regex) 활용법
 

3. 주요 정규표현식 패턴

(1) 문자 클래스

패턴설명
\d 숫자 (0-9)
\D 숫자가 아닌 문자
\w 영문자, 숫자, 밑줄 (a-z, A-Z, 0-9, _)
\W \w가 아닌 문자
\s 공백 문자 (스페이스, 탭, 줄바꿈)
\S 공백이 아닌 문자
javascript
복사편집
console.log(/\d/.test("123abc")); // true (숫자 포함) console.log(/\D/.test("123")); // false (숫자만 포함) console.log(/\w/.test("Hello_123")); // true (영문자, 숫자, 밑줄 포함) console.log(/\s/.test("Hello World")); // true (공백 포함)

(2) 메타 문자와 수량자

패턴설명
. 개행(\n)을 제외한 모든 문자
* 0개 이상 반복 (ab* → a, ab, abb 가능)
+ 1개 이상 반복 (ab+ → ab, abb 가능)
? 0개 또는 1개 (ab? → a, ab 가능)
{n} 정확히 n번 반복 (a{3} → aaa 가능)
{n,} 최소 n번 반복 (a{2,} → aa, aaa, aaaa 가능)
{n,m} n~m번 반복 (a{2,4} → aa, aaa, aaaa 가능)
javascript
복사편집
console.log(/a.b/.test("acb")); // true ('.'는 어떤 문자든 가능) console.log(/ab*/.test("abbbb")); // true ('b'가 0개 이상 가능) console.log(/ab+/.test("a")); // false ('b'가 최소 1개 이상 필요) console.log(/ab?/.test("a")); // true ('b'가 0개 가능) console.log(/a{2,4}/.test("aaa")); // true ('a'가 2~4개)

(3) 그룹화 및 선택자

패턴설명
() 그룹화 (부분 패턴을 묶음)
` `
javascript
복사편집
const regex = /(hello|hi) world/; console.log(regex.test("hello world")); // true console.log(regex.test("hi world")); // true console.log(regex.test("hey world")); // false

4. JavaScript에서 정규표현식 활용

(1) test() – 문자열 포함 여부 확인

javascript
복사편집
const regex = /\d+/; console.log(regex.test("123abc")); // true console.log(regex.test("abc")); // false

(2) match() – 패턴과 일치하는 부분 찾기

javascript
복사편집
const text = "My phone number is 010-1234-5678."; const phoneRegex = /\d{3}-\d{4}-\d{4}/; console.log(text.match(phoneRegex)); // ["010-1234-5678"]

(3) replace() – 문자열 치환

javascript
복사편집
const text = "I love JavaScript!"; console.log(text.replace(/JavaScript/, "TypeScript")); // "I love TypeScript!"

(4) split() – 패턴을 기준으로 문자열 분할

javascript
복사편집
const csv = "apple,banana,grape,orange"; console.log(csv.split(/,/)); // ["apple", "banana", "grape", "orange"]

5. 실전 예제

(1) 이메일 형식 검증

javascript
복사편집
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; console.log(emailRegex.test("user@example.com")); // true console.log(emailRegex.test("invalid-email")); // false

(2) 비밀번호 강도 검사

javascript
복사편집
const passwordRegex = /^(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/; console.log(passwordRegex.test("StrongP@ss1")); // true console.log(passwordRegex.test("weakpass")); // false

(3) URL 검증

javascript
복사편집
const urlRegex = /^(https?:\/\/)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\/?$/; console.log(urlRegex.test("https://www.example.com")); // true console.log(urlRegex.test("ftp://example.com")); // false

6. 결론

정규표현식 활용 요약

  • /패턴/플래그 형식으로 사용
  • test() → 문자열 패턴 포함 여부 확인
  • match() → 패턴과 일치하는 문자열 찾기
  • replace() → 문자열 변환
  • split() → 패턴을 기준으로 문자열 나누기

📌 실전 활용 예시

  • 이메일, 비밀번호, URL 검증
  • 전화번호 및 주민등록번호 검사
  • 텍스트 필터링 및 데이터 변환

JavaScript에서 정규표현식을 활용하면 복잡한 문자열 처리를 간결하고 효율적으로 수행할 수 있다. 다양한 활용 예제를 직접 테스트하며 정규표현식을 마스터해 보자!