브라우저에서만 처리
1. 초성 검색 정규식
| 패턴 | - | |
|---|---|---|
| JavaScript | - | |
| Java | - | |
| Python | - |
그 자리에서 테스트
2. 자모 분해 · 결합
겹받침(ㄳ 등)과 겹모음(ㅘ 등)은 분해 시 두 자모로 풀고, 결합 시 다시 합칩니다.
음절 분해표
| 음절 | 초성 | 중성 | 종성 | 공식 (초성×21+중성)×28+종성+0xAC00 | 코드 |
|---|---|---|---|---|---|
| 위에서 분해를 누르면 채워집니다. | |||||
이 도구를 쓰는 법
1. 초성 자동완성 검색 만들기
검색어의 각 글자를 이렇게 바꿉니다. 완성된 음절(검)은 그대로 두고,
초성(ㅅ)은 그 초성으로 시작하는 음절 전체 구간의 문자 클래스로 바꿉니다.
한글 음절은 유니코드에서 (초성×21 + 중성)×28 + 종성 + 0xAC00 공식으로
나열되어 있어서, 초성 인덱스 i 의 구간은
U+AC00 + i×588 부터 588자입니다. ㄱ이면 [가-깋]이 됩니다.
2. 언어별 붙여넣기
- JavaScript —
new RegExp(...)없이 리터럴 그대로 쓰면 됩니다. - Java — 문자열 리터럴에서는 백슬래시를
\\로 두 번 씁니다. 위 Java 칸이 그 형태입니다. - Python —
r"..."원시 문자열이면 백슬래시를 그대로 쓸 수 있습니다.
3. 직접 구현한다면
글자 c가 음절인지는 '가' <= c && c <= '힣' 로,
초성 인덱스는 (c - 0xAC00) / 588 로 얻습니다. 이 도구의 분해표에서
글자별 인덱스를 확인할 수 있습니다.
자주 묻는 것
ㄳ, ㄵ 같은 겹받침은 왜 초성 검색이 안 되나요?
겹받침은 초성에 쓰이지 않는 자모라 초성 검색 대상이 아닙니다(초성은 19개뿐입니다). 이 도구에서는 일반 문자로 취급해 이스케이프만 합니다.
정규식 없이 초성 검색을 하려면?
각 글자의 초성 인덱스만 비교하면 되므로, 대량 데이터라면 정규식보다 초성 문자열을 미리 뽑아 컬럼/필드로 저장해 두고 LIKE 나 startsWith 로 찾는 편이 빠릅니다. 정규식 방식은 구현이 간단해 자동완성 정도의 규모에 알맞습니다.
입력한 값이 서버로 전송되나요?
전송되지 않습니다. 전부 브라우저의 자바스크립트에서 처리하며 네트워크 요청이 발생하지 않습니다.
관련 도구: 한글 깨짐 복구 · 사업자등록번호 검증 · JSON 포맷터