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"]

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에서 정규표현식을 활용하면 복잡한 문자열 처리를 간결하고 효율적으로 수행할 수 있다. 다양한 활용 예제를 직접 테스트하며 정규표현식을 마스터해 보자!
'IT & 웹개발' 카테고리의 다른 글
React Server Components – 새로운 개념과 활용 방법 (0) | 2025.04.04 |
---|---|
React vs Vue vs Angular – 프론트엔드 프레임워크 비교 (0) | 2025.04.03 |
브라우저 로컬 저장소(LocalStorage, SessionStorage, IndexedDB) 비교 (0) | 2025.04.03 |
JavaScript의 this 바인딩 – call, apply, bind 차이점 (0) | 2025.04.03 |
JavaScript 클로저(Closure) 완벽 가이드 (0) | 2025.04.02 |