사용 방법
- 위 칸에 정규식을 쓰고 플래그(g, i, m 등)를 켜고 끕니다. 슬래시(/)는 쓰지 않아도 됩니다.
- 왼쪽 ‘테스트할 글’에 글을 넣으면 일치한 부분이 형광펜으로 칠해지고, 오른쪽 표에 위치와 캡처 그룹이 나옵니다.
- ‘바꾸기’를 켜면
$1,$<이름>으로 치환한 결과를 미리 봅니다. - ‘자주 쓰는 패턴’에서 휴대폰 번호, 이메일, 날짜 같은 패턴을 불러와 고쳐 쓸 수 있습니다.
계산 기준과 공식
브라우저의 JavaScript 정규식 엔진으로 실행하므로 JavaScript, TypeScript, Node.js에서와 결과가 같습니다. Java, Python, PCRE와는 일부 문법이 다릅니다(예: Python의 이름 있는 그룹은 (?P<name>)).
| 문법 | 뜻 |
|---|---|
| \d \w \s | 숫자, 영문·숫자·밑줄, 공백 |
| [가-힣] | 한글 완성형 한 글자 |
| * + ? {2,4} | 0번 이상, 1번 이상, 0~1번, 2~4번 반복 |
| *? +? | 가능한 짧게(게으른) 반복 |
| ^ $ | 시작과 끝 (m 플래그면 줄마다) |
| ( ) (?: ) (?<이름> ) | 캡처 그룹, 캡처하지 않는 그룹, 이름 있는 그룹 |
| (?= ) (?! ) (?<= ) | 앞쪽·부정·뒤쪽 조건 (일치에는 포함되지 않음) |
패턴은 별도 작업 스레드(Web Worker)에서 실행하고 1.5초가 넘으면 멈춥니다. 그래서 (a+)+$ 같은 위험한 패턴을 넣어도 페이지가 멈추지 않습니다.
예시
휴대폰 번호만 골라내기
01[016789]-?\d{3,4}-?\d{4}를 ‘고객센터 1588-0000, 담당자 010-1234-5678, 대표 01098765432’에 적용하면 010-1234-5678, 01098765432 2개가 잡힙니다. 1588 같은 대표번호는 01로 시작하지 않아 빠집니다.주민번호 형식 뒷자리 가리기
(\d{6})-?([1-4])\d{6}를$1-$2******로 바꾸면 ‘테스트 데이터: 900101-1234567, 0102034123456 (가짜 번호)’이 ‘테스트 데이터: 900101-1******, 010203-4****** (가짜 번호)’가 됩니다. 성별 자리만 남기고 나머지를 가리는 흔한 마스킹입니다. 실제 번호로 시험하지 마세요.
결과를 읽는 법
일치가 예상보다 많으면 .*처럼 너무 넓은 반복이 있거나 \b 경계가 빠진 경우가 많습니다. 반대로 하나도 안 잡히면 i(대소문자) 플래그, m(여러 줄) 플래그를 먼저 확인하세요. 표의 위치는 0부터 센 글자 위치(시작–끝)입니다.
자주 묻는 질문
g 플래그를 끄면 어떻게 되나요?
처음 일치한 하나만 찾습니다. 바꾸기도 첫 번째 일치만 바뀝니다. 전체를 찾거나 바꾸려면 g를 켜세요.
한글을 찾으려면 어떻게 쓰나요?
완성형 한글은 [가-힣]으로 찾습니다. 자음·모음(ㄱ, ㅏ)까지 포함하려면 [가-힣ㄱ-ㅎㅏ-ㅣ]를 씁니다. u 플래그를 켜면 \p{Script=Hangul}도 쓸 수 있습니다.
이메일 정규식은 완벽한가요?
여기 있는 패턴은 실무에서 흔히 쓰는 단순한 형태라 대부분의 주소를 잡지만 표준(RFC 5322)을 모두 따르지는 않습니다. 가입 검증은 정규식으로 형식만 거르고 실제 인증 메일로 확인하는 것이 안전합니다.
패턴이 오래 걸린다며 멈췄어요.
(a+)+나 (.*)*처럼 반복 안에 반복이 있으면 일치하지 않는 입력에서 경우의 수가 폭발합니다(ReDoS). 반복 대상을 더 구체적으로 쓰거나, 중첩 반복을 하나로 합치세요.
결과가 이상하거나 있었으면 하는 기능이 있나요? 오류 제보 · 의견 보내기