문서 › 규칙
한국형 검증기 (kr.*)
사업자등록번호, 법인등록번호, 주민등록번호, 전화번호, 우편번호, 금액 형식. 정상 번호를 거부하지 않도록 만든 규칙과 정규형.
한국 업무 파일에 자주 나오는 번호와 금액을 열 형식으로 검사하고 정리합니다. 원칙은 정상 번호를 거부하지 않는 것입니다. 공식 출처가 없거나 바뀐 검증 공식(법인번호, 2020년 10월 이후 주민번호)은 오류가 아니라 경고로만 알립니다.
{
"columns": [
{ "key": "brn", "header": "사업자등록번호", "type": "kr.brn" },
{ "key": "crn", "header": "법인등록번호", "type": "kr.crn", "required": false, "crn": { "checksum": "warn" } },
{ "key": "rrn", "header": "주민등록번호", "type": "kr.rrn", "rrn": { "checksum": "warn" } },
{ "key": "phone", "header": "휴대폰", "type": "kr.phone", "phone": { "kind": "mobile" } },
{ "key": "zip", "header": "우편번호", "type": "kr.zip" },
{ "key": "amount", "header": "금액", "type": "kr.amount", "min": 0 }
]
}| type | 규칙 | 정규형 | 주의 |
|---|---|---|---|
kr.brn 사업자등록번호 | 10자리(-·공백·. 구분 가능), 가중치 1,3,7,1,3,7,1,3,5 검증 숫자 | 123-45-67890 | 검증 숫자가 맞아도 실제 사업자인지는 국세청 API로 서버에서 확인해야 합니다 |
kr.crn 법인등록번호 | 13자리 형식만(기본) | 110111-1234567 | 검증 공식에 공식 출처가 없어 체크섬은 기본으로 끕니다. crn.checksum: "warn" 으로 켜도 경고(CRN_CHECKSUM)일 뿐입니다 |
kr.rrn 주민·외국인등록번호 | 13자리, 7번째 자리로 정한 세기의 실제 생년월일, 7번째 자리 0–9 | YYMMDD-NNNNNNN | 체크섬 불일치는 오류가 아니라 경고 RRN_CHECKSUM 입니다. 2020년 10월부터 새로 받은 번호는 뒷자리가 임의 번호라 예전 검증 공식이 맞지 않기 때문입니다. 미래 날짜의 생년월일도 형식이 맞으면 받습니다 |
kr.phone 전화번호 | 휴대폰 010+4+4(010 은 가운데 4자리만), 011/016/017/018/019+3–4+4; 지역번호 02, 031–033, 041–044, 051–055, 061–064+3–4+4, 070+4+4, 0502–0508; 대표번호 15xx/16xx/18xx+4(any 만) | 010-1234-5678, 02-123-4567, 1588-1234 | +82·82 는 0으로 바꿉니다. 1012345678 처럼 0만 붙이면 맞는 숫자는 LEADING_ZERO_LOSS(셀 서식을 텍스트로 바꾸라는 안내) |
kr.zip 우편번호 | 5자리(2015-08부터) | 01234(5자리 문자열) | 6자리 옛 번호(123-456)는 전용 메시지, 4자리는 LEADING_ZERO_LOSS |
kr.amount 금액 | 12,000, 12000원, ₩12,000, KRW 12000, (1,000)·△1,000·▲1,000·-1,000(음수), +1000 | JS 숫자 | 1천원, - 하나만, 부호 두 개는 거부. ±2^53−1을 넘으면 거부 |
앞자리 0이 사라진 값
엑셀이 전화번호나 우편번호를 숫자로 저장하면 앞자리 0이 사라집니다(01012345678 → 1012345678). kr.phone·kr.zip·kr.rrn 은 0을 붙이면 맞는 값을 LEADING_ZERO_LOSS 로 알리고 셀 서식을 텍스트로 바꾸라고 안내합니다. 등급은 열의 severity 를 따릅니다. 파일을 읽을 때 텍스트 계열 열의 숫자 칸도 같은 코드의 경고로 알립니다.
개인정보 마스킹
kr.rrn·kr.phone 열의 값은 오류 메시지, 리포트, 미리보기에서 항상 900101-1******, 010-****-5678 처럼 가립니다. 업로드할 result.rows 는 가리지 않습니다. 자세한 것은 규칙 형식의 개인정보 절에 있습니다.
함수만 쓰기
82excel/kr(CDN은 Excel82.kr)로 검증 함수만 쓸 수도 있습니다: isBrn(s), isCrn(s), isRrn(s)(형식·생년월일만, 체크섬 무시), isPhone(s, kind?), isZip(s), isAmount(s), 그리고 정리된 값과 코드를 돌려주는 normalizeKrBrn 등.
import { isBrn, isPhone, isZip, isAmount } from '82excel/kr'; // CDN: Excel82.kr
isBrn('123-45-67891'); // true (자릿수와 검증 숫자)
isBrn('123-45-67890'); // false (검증 숫자가 틀림)
isPhone('010 1234 5678', 'mobile'); // true
isZip('01234'); // true
isAmount('₩12,000'); // true