리터럴과 test
const re = /^\d+$/;
re.test('12'); // true
re.test('12a'); // false
^ 시작, $ 끝, \d 숫자, + 1회 이상.
코딩 테스트에서는 과한 정규식보다 split/includes가 읽기 쉬운 경우가 많습니다. 패턴이 분명할 때만 쓰세요.
match / matchAll
'a1b22'.match(/\d+/g); // ['1','22']
g 플래그로 전부. 캡처 그룹이 필요하면 괄호와 matchAll을 봅니다.
replace
s.replace(/\s+/g, ' ').trim();
s.replace(/[^a-z0-9]/gi, '');
청소·토큰화에 자주 씁니다. 전역 치환에는 g가 필요합니다.
함정
.는 임의 한 글자. 점 문자 자체는\.- 탐욕
.*가 너무 많이 먹을 수 있음 - 유니코드·한글은
\w만으로 부족할 수 있음
체크리스트
- 시작·끝을 고정해야 하나? (
^$) g가 필요한가?- 정규식 없이도
indexOf/startsWith로 되나?
연습
연습장에서 이메일 형태가 아니라 숫자만으로 된 문자열인지 test로 판별하는 함수를 만드세요.
한 줄
> 정규식은 짧게. 읽기 어려우면 문자열 API로 풀라.
관련 태그 문제로 바로 연습해 두면 읽기가 남습니다.
예: 공백 정리
function norm(s) {
return String(s).replace(/\s+/g, ' ').trim();
}
토큰 비교 전에 쓰면 포맷 실패가 줄어듭니다.
한 줄 복습
test로 판별, match로 추출, replace로 청소.
더 깊게
읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.
관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.
막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.