Programing/javascript

국가별 여권번호 유효성 검사

2025. 4. 22. 08:54
반응형

 

여권번호는 국가마다 규칙이 다르기 때문에, 이를 검증할 때는 국가별로 적절한 정규표현식을 사용하는 것이 중요합니다. 이 글에서는 입력된 여권번호가 특정 국가의 규칙에 부합하는지를 검사하는 JavaScript 함수 isValidPassportNumber의 구조를 살펴보고, 실제 여권번호를 조회 또는 검증할 수 있는 공공 API가 있는지에 대해서도 함께 안내합니다.


✨ 함수 설명

function isValidPassportNumber(passportNumber, isoCode) {
    const passportPatterns = {
        KR: /^[A-Z]{1}\d{8}$/,               // 대한민국
        US: /^\d{9}$/,                       // 미국
        IN: /^[A-Z]{1}\d{7}$/,               // 인도
        CN: /^[EG]\d{8}$/,                   // 중국
        DE: /^[CFGHJKLMNPRTVWXYZ]{2}\d{7}$/, // 독일
        // ... (생략: 주요 국가별 패턴 포함)
    };

    const pattern = passportPatterns[isoCode.toUpperCase()];
    if (!pattern) {
        console.warn(`지원되지 않는 국가 코드입니다: ${isoCode}`);
        return false;
    }

    return pattern.test(passportNumber);
}

✨ 주요 특징

  • passportNumber: 검사할 여권번호 문자열
  • isoCode: 국가 코드 (ISO-3166-1 alpha-2 표준)
  • 국가별 정규표현식을 미리 정의해 놓고, 해당 국가에 맞는 패턴으로 검사
  • 존재하지 않는 국가 코드일 경우 경고 로그 출력 후 false 반환

✨ 사용 예시

isValidPassportNumber('M12345678', 'KR'); // true → 대한민국 여권번호 형식
isValidPassportNumber('123456789', 'US'); // true → 미국 여권번호 형식
isValidPassportNumber('G12345678', 'CN'); // true → 중국 여권번호 형식
isValidPassportNumber('12345678', 'KR');  // false → 숫자만 존재하면 실패

❌ "실제 여권번호 확인 API"가 없는가?

이유설명
🔐 개인정보 보호 여권번호는 국가에서 관리하는 민감한 개인정보이므로 공개된 API로 검증할 수 없습니다.
🛂 국가별 제한 대부분의 출입국/외교 시스템은 내부 전용 또는 정부기관 인증 필요
🌍 국제 협약 이슈 국가 간 여권 정보를 공유하려면 보안협정 또는 조약 체결이 필요함

✅ 가능한 대안 (실제 유효성은 확인 못해도 형식 검증은 가능)

1. 국가별 정규식 기반 유효성 검사

  • 예: ^[A-Z]{1}\d{8}$ → 한국 여권 기본 형식
  • 실제 발급 여부는 판단 못하지만 형식 기준 필터링 가능
    → 지금까지 작성해드린 isValidPassportNumber() 함수가 이에 해당합니다.

2. 항공사 또는 비자 발급 API (거의 예외적으로 사용됨)

  • 예: IATA, Timatic Web API
  • 사용 목적: 탑승객 비자/여권 규정 확인
  • 사용 조건: 항공사, 여행사, 공항기관만 이용 가능
  • 예시:
    • IATA Timatic Web
    • SITA Travel Documentation API

하지만 여전히 여권번호 자체 유효성 확인은 불가 (입력값이 유효한 형식인지 정도만 체크)


3. 비자 발급 시스템 내 자동 검증

  • 예: ESTA(미국), K-ETA(한국), ETA(호주)
  • 여권번호 입력 시 국가 DB와 실시간 대조
  • 단점: API 형태가 아닌 웹 폼 기반이며, 사전 승인 시만 작동

🛠️ 현실적인 권장 방법

방법목적
정규식 필터 형식만이라도 맞는지 검증 (예: 입력 오류 방지)
국가코드 + 길이 검증 ISO + 자리수 + 시작문자 체크
OCR/스캔 연동 실제 여권 스캔 → MRZ 코드 검증 (실제 사용자 보유 여부 확인 가능)

 

 


✨ 결론

isValidPassportNumber 함수는 실제 여권번호의 유효성을 정규표현식 기준으로 1차적으로 확인할 수 있는 강력한 도구입니다. 국가별 여권 발급 형식을 반영해 간단히 검증 가능하며, 민감한 데이터를 직접적으로 검증하기 어려운 환경에서는 유용한 사전 필터 역할을 할 수 있습니다. 다만, 실제 존재하는 번호인지는 반드시 수동 또는 관공서 시스템에서의 확인이 필요합니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트의 데이터 타입 완전 정복 (typeof, null, undefined)  (0) 2025.04.23
자바스크립트의 var, let, const 차이와 올바른 사용법  (0) 2025.04.23
javascript 비밀번호 유효성 검사  (0) 2025.04.22
javascript 이메일 유효성 검사  (0) 2025.04.22
윤년 기준으로 날짜 선택 옵션을 자동 변경하는 함수  (0) 2025.04.22
생년월일 유효성 검사 함수  (0) 2025.04.22
날짜 범위 형식 유효성 검사 함수  (1) 2025.04.22
날짜 형식 유효성 검사 함수  (0) 2025.04.22
'Programing/javascript' 카테고리의 다른 글
  • javascript 비밀번호 유효성 검사
  • javascript 이메일 유효성 검사
  • 윤년 기준으로 날짜 선택 옵션을 자동 변경하는 함수
  • 생년월일 유효성 검사 함수
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (466) N
      • 금융 (61)
      • Programing (286) N
        • Algorithm (39)
        • API (2)
        • javascript (121)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
        • 보안 (2) N
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6) N
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (33) N
        • 회고 (3)
        • 컬럼 (1) N
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    기초
    IT·컴퓨터
    It
    디자인패턴
    자바스크립트유틸
    JavaScript
    위시리스트
    jsp
    사고 싶은 책
    IT블로그
    php
    SQL
    블로그
    자바스크립트
    js패턴
    자바
    읽고 싶은 책
    Java
    IT 관련
    iT's MY LiFE
Dongkkase
국가별 여권번호 유효성 검사
상단으로

티스토리툴바