기본 콘텐츠로 건너뛰기

자바스크립트(JavaScript) | 주민등록번호, 법인등록번호, 사업자등록번호 유효성 체크


자바스크립트(JavaScript) | 주민등록번호, 법인등록번호, 사업자등록번호 유효성 체크

자리수 + 유효성 체크




1. 주민등록번호 유효성 체크

- isJuminNo(13자리) : 유효할 경우 true를 리턴함
isJuminNo('xxxxxx-xxxxxxx');
isJuminNo('xxxxxxxxxxxxx');


2. 법인등록번호 유효성 체크

- isBubinNo(13자리) : 유효할 경우 true를 리턴함
isBubinNo('xxxxxx-xxxxxxx');
isBubinNo('xxxxxxxxxxxxx');


3 사업자등록번호 유효성 체크

- isCorporateRegiNo(10자리) : 유효할 경우 true를 리턴함
isCorporateRegiNo('xxx-xx-xxxxx');
isCorporateRegiNo('xxxxxxxxxx');



// 주민등록번호 유효성 체크
function isJuminNo(no) {
 
    // -제거
    no = no.split('-').join('');
 
    var arr_ssn = [];
    var compare = [2,3,4,5,6,7,8,9,2,3,4,5];
    var sum     = 0;
 
    // 입력값 체크
    if (no.match('[^0-9]')) {
        return false; 
    }
 
    // 자리수 체크
    if (no.length != 13) {
        return false;
    }    
 
    // 공식: M = (11 - ((2×A + 3×B + 4×C + 5×D + 6×E + 7×F + 8×G + 9×H + 2×I + 3×J + 4×K + 5×L) % 11)) % 10
    for (var i = 0; i < 13; i++) { 
        arr_ssn[i] = no.substring(i,i+1); 
    }
    
    for (var i = 0; i < 12; i++) {
        sum = sum + (arr_ssn[i] * compare[i]); 
    }
 
    sum = (11 - (sum % 11)) % 10;
    
    if (sum != arr_ssn[12]) { 
        return false; 
    }
 
    return true;
 
}
 
 
// 법인등록번호 유효성 체크
function isBubinNo(no) {
    
    // -제거
    no = no.split('-').join('');
 
    var as_Biz_no = String(no);
    var isNum = true;
    var I_TEMP_SUM = 0 ;
    var I_TEMP = 0;
    var S_TEMP;
    var I_CHK_DIGIT = 0;
 
    if (no.length != 13) {
        return false;
    }
 
    for (var index01 = 1; index01 < 13; index01++) {
        var i = index01 % 2;
        var j = 0;
 
        if(i == 1) j = 1;
        else if( i == 0) j = 2;
 
        I_TEMP_SUM = I_TEMP_SUM + parseInt(as_Biz_no.substring(index01-1, index01),10) * j;
    }
 
    I_CHK_DIGIT= I_TEMP_SUM%10;
    if (I_CHK_DIGIT != 0 ) I_CHK_DIGIT = 10 - I_CHK_DIGIT;
 
    if (as_Biz_no.substring(12, 13) != String(I_CHK_DIGIT)) return false;
 
    return true;
    
}
 
// 사업자등록번호 유효성 체크
function isCorporateRegiNo(no) {
    
    var numberMap = no.replace(/-/gi, '').split('').map(function (d){
        return parseInt(d, 10);
    });
    
    if (numberMap.length == 10) {
 
        var keyArr = [1, 3, 7, 1, 3, 7, 1, 3, 5];
        var chk = 0;
        
        keyArr.forEach(function(d, i){
            chk += d * numberMap[i];
        });
        
        chk += parseInt((keyArr[8] * numberMap[8])/ 10, 10);
        return Math.floor(numberMap[9]) === ( (10 - (chk % 10) ) % 10);
 
    }
    
    return false;
    
}

댓글