Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 유효한 16진수(Hex) 코드 검증하기

문자열이 유효한 16진수(hex) 코드라고 판단하려면, 해당 문자열이 숫자 0~9와 알파벳 소문자 a~f 외의 다른 문자를 포함하지 않아야 합니다.

예를 들어 다음과 같습니다.

'3423ad' → 유효한 hex 코드
'4234es' → 유효하지 않은 hex 코드 ('e'와 's' 중 's'는 허용되지 않음)

이번 글에서는 문자열을 인자로 받아 해당 문자열이 유효한 hex 코드인지 판별하는 JavaScript 함수를 작성해 보겠습니다.

방법 1: 반복문과 includes() 활용

허용되는 문자 목록(legend)을 정의한 후, 문자열의 각 문자가 이 목록에 포함되어 있는지 하나씩 검사하는 방식입니다.

const str1 = '4234es';
const str2 = '3423ad';

const isHexValid = str => {
  const legend = '0123456789abcdef';
  for(let i = 0; i < str.length; i++){
    if(legend.includes(str[i])){
      continue;
    }
    return false;
  }
  return true;
};

console.log(isHexValid(str1)); // false
console.log(isHexValid(str2)); // true

출력 결과

false
true

'4234es'에는 허용되지 않는 문자 's'가 포함되어 있어 false가 반환되고, '3423ad'는 모든 문자가 유효하므로 true가 반환됩니다.

방법 2: 정규표현식(RegExp) 활용

더 간결하게 처리하고 싶다면 정규표현식을 사용할 수도 있습니다.

const isHexValidRegex = str => /^[0-9a-f]+$/i.test(str);

console.log(isHexValidRegex('4234es')); // false
console.log(isHexValidRegex('3423ad')); // true
  • ^$: 문자열 전체가 패턴과 일치해야 함을 의미합니다.
  • [0-9a-f]: 숫자 0~9 또는 알파벳 a~f 범위의 문자만 허용합니다.
  • i 플래그: 대소문자를 구분하지 않아 'ABCDEF' 같은 대문자 hex 코드도 통과시킵니다.

대소문자까지 엄격하게 구분해야 한다면 i 플래그를 제거하고 패턴을 /^[0-9a-f]+$/로 바꾸면 됩니다.

마무리

반복문 방식은 로직이 직관적이라 이해하기 쉽고, 정규표현식 방식은 코드가 짧고 간결하다는 장점이 있습니다. 실제 프로젝트에서는 색상 코드(#RRGGBB) 형태처럼 # 접두사나 자리 수 제한까지 함께 검증해야 하는 경우가 많으니, 필요에 따라 패턴을 확장하여 활용하시기 바랍니다.