정규식 시험

정규식을 넣으면 글의 어디에 맞는지 색으로 덧칠해 보여 주고, 잡힌 그룹을 하나씩 뜯어 줍니다. 목록만 보여 주면 어디에 걸렸는지 알 수 없어 둘을 함께 냅니다.

//g

2군데 맞았습니다

문의는 hong@example.com 또는 kim@test.co.kr 로 주세요.

  • 4 hong@example.com1=hong 2=example.com
  • 24 kim@test.co1=kim 2=test.co

자바스크립트 정규식 기준입니다. 파이썬·자바와 미묘하게 다른 부분이 있으니 그쪽에 옮길 때는 한 번 더 확인하세요.

식을 적는 법

슬래시 없이 안쪽만 적습니다. /\d+/g 가 아니라 \d+ 입니다. 코드의 문자열에 넣으려고 \\d 로 두 번 쓴 것도 여기서는 한 번이면 됩니다 — 두 번 쓰면 백슬래시 글자 자체를 찾게 됩니다. 넣는 대로 바로 다시 돌므로 누를 것이 없고, 문법이 틀리면 브라우저 엔진의 오류 문구가 그대로 나옵니다.

플래그 다섯 개

i 는 대소문자를 가리지 않고, m 은 ^·$ 를 줄마다 맞춥니다. s 는 . 이 줄바꿈에도 맞게 하고, u 는 이모지 같은 네 바이트 글자를 한 글자로 셉니다. g 는 켜고 끄는 것과 상관없이 늘 켜진 채로 돕니다 — 목록을 내려면 전부 찾아야 하기 때문입니다.

그룹과 결과 목록

결과마다 시작 위치, 잡힌 글, 그룹이 나옵니다. 번호 그룹은 1=… 으로, 이름 붙은 그룹 (?<year>…) 은 번호로 한 번, 이름으로 한 번 두 번 나옵니다. 맞지 않은 선택 그룹은 — 입니다. 덧칠은 500개까지 하고 목록은 앞 50개만 보여 줍니다. 빈 문자열에 맞는 식(a*)은 자리마다 한 번씩 맞아 글자 수만큼 결과가 나옵니다 — 그럴 때는 a+ 처럼 최소 하나를 요구하세요.

자주 묻는 질문

브라우저가 굳지 않나요?

(a+)+b 처럼 반복이 겹친 식에 긴 글을 물리면 되짚기가 폭발해 탭이 멈춥니다. 이 화면의 2초 제한은 맞는 것과 맞는 것 사이에서만 확인하므로, 맞는 것을 많이 내는 식은 거기서 멈추지만 한 번의 맞춤 안에서 폭발하는 식은 멈추지 못합니다. 반복이 겹친 식은 넣기 전에 겹치지 않게 고치세요 — 그것이 유일한 방어입니다.

파이썬에서도 그대로 되나요?

자바스크립트 기준입니다. 뒤돌아보기(lookbehind)나 이름 붙은 그룹 문법이 언어마다 미묘하게 다르니, 옮길 때는 그쪽에서 한 번 더 확인하세요.

어느 문법인가요?

자바스크립트 정규식입니다. 파이썬이나 자바와 다른 자리가 있습니다 — 예를 들어 이름 붙인 그룹의 표기나 뒤돌아보기(lookbehind) 지원이 갈립니다. 다른 언어에 쓸 식이라면 그쪽에서 한 번 더 확인하세요.

첫 번째만 잡힙니다.

이 화면은 맞는 것을 언제나 전부 찾습니다. 전역 플래그(g)는 켜고 끄는 것과 상관없이 붙여서 돌리므로, 하나만 색이 붙었다면 실제로 하나만 맞는 것입니다. 글자 사이에서 끊기는 식이라면 경계(\b)나 앞뒤 글자를 다시 보세요. 대소문자를 가리지 않으려면 i 를 씁니다.

이메일 주소 검사 정규식은 뭘 쓰나요?

완전한 식은 없고 쓸 수도 없습니다. RFC 5322 를 다 담으면 수천 글자가 되고 그것도 실제로 받는 주소와는 다릅니다. ^[^\s@]+@[^\s@]+\.[^\s@]+$ 정도로 「@ 가 하나, 점이 있는 도메인」만 보고, 실제 확인은 메일을 보내서 하세요.

한글만 찾으려면요?

[가-힣]+ 가 완성된 한글 음절입니다. 자모만 있는 ㄱ·ㅏ 는 이 범위 밖이라 [ㄱ-ㅎㅏ-ㅣ] 를 더합니다. u 플래그를 켜면 \p{Script=Hangul} 로 둘 다 한 번에 잡을 수 있습니다.

붙여넣은 코드가 서버로 가나요?

가지 않습니다. 브라우저 안에서만 처리하고 어디에도 보내거나 저장하지 않습니다. 사내 설정 파일이나 운영 쿼리처럼 밖으로 내보내기 곤란한 것도 그래서 쓸 수 있습니다. 인터넷을 끊고도 동작합니다.