Regex 이해하기: 가장 쉬운 가이드
Source: Dev.to
정규식이란?
- 문자열에서 특정 패턴을 찾고, 바꾸고, 검증하고, 추출하는 데 사용되는 패턴 매칭 도구입니다.
- 흔히 쓰이는 경우: 숫자 찾기, 이메일 검증, 알파벳 필터링, 특수 문자 제거, 날짜·전화번호·ID 등 추출 등.
JavaScript에서 정규식 구문
JavaScript에서는 정규식을 슬래시 사이에 작성합니다:
/pattern/flags
예시
/[0-9]+/g
구성 요소
| 부분 | 의미 |
|---|---|
/ | 정규식 시작 |
[0-9]+ | 패턴 (하나 이상의 숫자) |
/ | 정규식 종료 |
g | 플래그 – 전역 검색 (모든 매치를 찾음) |
문자 집합
정규식에서 가장 중요한 부분은 문자 집합([ ])입니다. 대괄호 안에 넣은 문자 중 하나라도 일치하면 매치됩니다.
| 패턴 | 의미 |
|---|---|
[0-9] | 모든 숫자 |
[a-z] | 소문자 a‑z |
[A-Z] | 대문자 A‑Z |
[a-zA-Z] | 모든 알파벳 문자 |
[0-9-] | 숫자 또는 하이픈 |
팁: 이 다섯 가지 패턴만 숙지해도 필요한 내용의 약 60 %를 알 수 있습니다.
수량자
수량자는 패턴이 몇 번 반복될지를 결정합니다.
| 기호 | 의미 | 예시 | 설명 |
|---|---|---|---|
+ | 1회 이상 | [0-9]+ | 하나 이상의 숫자 |
* | 0회 이상 | a* | “a”가 없을 수도, 있을 수도 있음 |
? | 0 또는 1회 | colou?r | “color” 또는 “colour”와 매치 |
앵커
앵커는 문자열 내에서 매치 위치를 지정합니다.
| 앵커 | 의미 |
|---|---|
^ | 문자열 시작 |
$ | 문자열 끝 |
예시
/^[0-9]+/
→ 문자열은 숫자로 시작해야 합니다.
플래그
플래그는 닫는 슬래시 뒤에 붙으며 정규식 동작을 수정합니다.
| 플래그 | 이름 | 사용 목적 |
|---|---|---|
g | Global | 모든 매치를 찾음 |
i | Ignore case | 대소문자 구분 없이 매치 |
m | Multiline | 각 줄마다 적용 |
s | Dotall | .이 줄바꿈 문자도 매치 |
예시
/hello/gi
매치되는 문자열: hello, Hello, HELLO, hElLo 등.
실제 활용 예시
1. 숫자 제거
"50-200 metric tonnes".replace(/[0-9]/g, "");
// Output: "-metric tonnes"
2. 숫자 추출 (하이픈 포함)
"50-200 metric tonnes".match(/[0-9-]+/)[0];
// Output: "50-200"
3. 이메일 검증
/^[\w.-]+@[\w.-]+\.\w{2,}$/i.test("user@example.com");
// Returns: true
4. 문자·숫자·공백만 남기기
text.replace(/[^a-zA-Z0-9 ]/g, "");
// 다른 모든 문자 제거
5. 정규식 없이 수동 필터링
let result = "";
for (let ch of str) {
if (!"0123456789".includes(ch)) {
result += ch;
}
}
요약 – 기억해야 할 핵심 규칙
- 문자 집합
[ ]– 매치할 대상 - 수량자
+ * ?– 반복 횟수 - 앵커
^ $– 문자열 시작·끝 - 플래그
g i m s– 동작 수정
이 규칙들을 기억하면 정규식 사용이 쉬워집니다.
정규식으로 할 수 있는 일
- 문자열 정리
- 사용자 입력 검증
- 데이터 추출
- 효율적인 치환 수행
Regex = 패턴 + 반복 + 플래그
이 공식을 마스터하면 정규식이 언제나 간단하게 느껴질 것입니다. 🚀