이메일 형태 단순 매칭
^[\w.+-]+@[\w-]+\.[\w.-]+$learner@coddy.tech
something@something.something이라는 기본 형태를 잡아냅니다. 실제 이메일 형식은 이보다 훨씬 관대하기 때문에, 폼 검증이라면 type="email" 속성과 서버 측 확인을 함께 쓰는 편이 좋습니다.
애니메이션 매치 강조로 정규식을 테스트하세요.
마지막 업데이트
정규식 테스터는 정규표현식을 입력하면 샘플 텍스트에서 무엇이 매칭되는지 즉시 보여주는 도구입니다. 개발자는 정규식(regex)을 사용해 입력값을 검증하거나, 문자열에서 데이터를 추출하고, 로그를 검색하고, 텍스트를 정제하고, 에디터 매크로를 만들거나, 찾기/바꾸기 규칙을 작성합니다.
정규식은 처음 보면 암호처럼 느껴집니다. 몇 글자 안 되는 기호에 의미가 너무 많이 담겨 있기 때문입니다. 실시간 테스터는 이 장벽을 단숨에 낮춰줍니다. 한 글자 입력할 때마다 매칭 결과와 캡처 그룹이 갱신되니, 원하는 동작이 나올 때까지 마음껏 실험할 수 있습니다.
언어마다 정규식 엔진이 조금씩 다릅니다(JavaScript, PCRE, Python, Java, Go, .NET). 다만 기본기 — 문자, 문자 클래스, 수량자, 앵커, 그룹 — 는 어디서나 똑같이 동작합니다. lookbehind, 명명 그룹, 점유 수량자(possessive quantifier) 같은 고급 기능에서 엔진별 차이가 드러나죠.
\d+는 연속된 숫자를 매칭하지만, 그 숫자가 말이 되는 값인지는 알지 못합니다.g는 모든 매칭을 찾고, i는 대소문자를 무시하며, m은 ^와 $가 줄 단위로 동작하게 하고, s는 .이 개행 문자에도 매칭되도록 만듭니다.(...)은 단순히 전체 문자열의 매칭 여부만 확인하는 게 아니라, 매칭된 일부를 따로 뽑아낼 수 있게 해줍니다. 파싱에서는 사실상 필수입니다.패턴 입력란에 정규표현식을 작성합니다. 양옆의 / 슬래시는 빼고 입력하세요 — 그건 자바스크립트 리터럴 문법일 뿐, 패턴 자체에 포함되지 않습니다.
보통은 g(전체 매칭)와 i(대소문자 무시)를 가장 자주 씁니다. 줄 단위 앵커가 필요하면 m, .이 개행에도 매칭되게 하려면 s를 켜세요.
샘플 텍스트를 테스트 영역에 붙여 넣으세요. 입력하는 동안 매칭 부분이 하이라이트되고, 캡처 그룹은 매칭 목록 아래에 함께 표시됩니다.
각 매칭 항목에는 위치, 매칭된 전체 문자열, 그리고 캡처된 그룹이 표시됩니다. 원하는 건 잡고, 원하지 않는 건 거르는지 이걸로 확인하세요.
수량자를 좁히고, 앵커(^, $)를 추가하고, 리터럴로 쓸 특수 문자(\., \?)를 이스케이프하면서 코드가 필요로 하는 정확한 매칭과 그룹이 나올 때까지 조정합니다.
실무에서 99% 시간을 차지하는 정규식 80%만 모았습니다. 북마크해 두면 문법을 가장 빠르게 떠올릴 수 있습니다. 전체 문법은 MDN 정규표현식 가이드를 참고하세요.
| 토큰 | 의미 | 예시 |
|---|---|---|
. | 임의의 한 글자(개행 제외) | a.c는 abc, a-c에 매칭 |
\d \D | 숫자 / 숫자가 아닌 문자 | \d+는 123에 매칭 |
\w \W | 단어 문자(글자/숫자/_) / 단어가 아닌 문자 | \w+는 hello_1에 매칭 |
\s \S | 공백 / 공백이 아닌 문자 | \s+는 스페이스, 탭에 매칭 |
[abc] | a, b, c 중 하나 | [aeiou]는 모음 한 글자 |
[^abc] | a, b, c가 아닌 문자 | [^0-9]는 숫자가 아닌 문자 |
* + ? | 앞 문자 0개 이상 / 1개 이상 / 0개 또는 1개 | a+는 a, aaa에 매칭 |
{n} {n,m} | 정확히 n번 / n번에서 m번 | \d{3,5}는 3~5자리 숫자 |
^ $ | 문자열 시작 / 끝(m 플래그가 있으면 줄 단위) | ^Error는 줄이 Error로 시작 |
(...) | 캡처 그룹 | (\d+)는 숫자를 캡처 |
(?:...) | 비캡처 그룹 | (?:foo|bar)는 캡처 없이 묶기 |
a|b | 선택(alternation) — a 또는 b | yes|no |
\b | 단어 경계 | \bcat\b는 cat에 매칭, cats에는 비매칭 |
^[\w.+-]+@[\w-]+\.[\w.-]+$learner@coddy.tech
something@something.something이라는 기본 형태를 잡아냅니다. 실제 이메일 형식은 이보다 훨씬 관대하기 때문에, 폼 검증이라면 type="email" 속성과 서버 측 확인을 함께 쓰는 편이 좋습니다.
\d+Lesson 12 has 3 tasks and 2 quizzes.
g 플래그를 켜면 연속된 숫자 모두를 찾습니다 — 12, 3, 2. \d+는 정규식으로 "숫자 한 자 이상"을 의미합니다.
/users/(\d+)/users/42/profile
전체 매칭은 /users/42이고, 캡처 그룹 (\d+)이 42만 따로 추출합니다. 코드에서 정규식 매칭 결과를 *실제로* 쓰려면 캡처 그룹이 핵심입니다.
<.+><.+?><b>hello</b>
탐욕적인 버전은 .+이 가능한 만큼 욕심껏 잡아먹어서 <b>hello</b> 전체에 매칭됩니다. 반면 게으른 버전(+?)은 처음 만나는 >에서 멈추기 때문에 <b>와 </b>만 각각 매칭합니다.
., ?, +, (, ), [, ], {, }, \, ^, $, |. 이 문자를 글자 그대로 쓰고 싶다면 앞에 \를 붙이세요..*를 탐욕적으로 사용해 의도보다 훨씬 많은 부분이 매칭되는 경우 — .*?로 바꾸거나, 더 구체적인 문자 클래스를 쓰세요.\d, \w, [abc])와 수량자(*, +, ?, {n,m})로 바꿔 나갑니다. 정규식 테스터로 원하는 케이스가 정확히 매칭될 때까지 반복적으로 다듬으세요.\w는 무슨 뜻인가요?\w는 단어 문자(word character)에 매칭됩니다 — 글자, 숫자, 또는 언더스코어(_)요. \W는 그 반대로, 단어 문자가 아닌 모든 문자를 가리킵니다. 정확한 범위는 엔진과 Unicode 플래그 설정에 따라 달라집니다..*는 가능한 한 많이 매칭하려 합니다. 게으른 수량자(.*?)로 바꾸거나, 더 구체적인 문자 클래스를 써서 원하는 지점에서 멈추게 하세요.re, Java, Go, .NET은 지원하는 플래그와 고급 기능(lookbehind 지원, 명명 그룹, 점유 수량자 등)이 조금씩 다릅니다.