React(Javascript) 사업자 등록번호 유효성 검사

사업자 등록번호 유효성 검사


사업자 등록번호에는 패턴이 있고, 이 패턴에 따라 유효한 사업자 등록번호인지 검사할 수 있다.
예로, 111-11-11119 이라는 10자리 임의의 번호를 검사해보자.
(이때 사업자번호 마지막 번호는 제일 마지막에 처리하므로, 9를 빼고 연산해보자.)

 

1. [1, 1, 1, 1, 1, 1, 1, 1, 1] 로 각 숫자를 나누어 배열에 담는다.

2. [1, 3, 7, 1, 3, 7, 1, 3, 5] 인증키 9자리 각 자릿수를 곱한 뒤, 전부 더해준다.
  Sum = (1*1) + (1*3) + (1*7) + (1*1) + (1*3) + (1*7) + (1*1) + (1*3) + (1*5)
  Sum = 31

3. 조회번호, 인증키 배열 마지막 숫자를 곱하여 10으로 나누어 소수점을 제거하고, 위에 추가로 더해준다.
  Sum += 1*5 / 10
  Sum = 31

4. Sum 을 10으로 나누어 나머지 값을 구한다.
  Sum/10 = 1

5. 위에서 구한 나머지 값을 10 에서 뺀 값을 구한다.
  10 - 1 = 9

6. 조회하고자 하는 마지막 사업자 번호와 5번에서 구한 값이 일치하는지 비교한다.
  9 = 9
  (111-11-11119 의 마지막 번호) = (5에서 구한 값)

 

코드


const regsplitNum = insertNum.replace(/-/gi, '').split('').map(function(item) {
  return parseInt(item, 10);
});

if (regsplitNum.length === 10) {
  const regkey = [1, 3, 7, 1, 3, 7, 1, 3, 5];
  let regNumSum = 0;
  for (var i = 0; i < regkey.length; i++) {
    regNumSum += regkey[i] * regsplitNum[i];
  }
  regNumSum += parseInt((regkey[8] * regsplitNum[8]) / 10, 10);
  const regCheck = (Math.floor(regsplitNum[9])) === ((10 - (regNumSum % 10) ) % 10);

  return regCheck;
}
반응형