JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで16進数コード(HEX)が有効かどうかを判定する方法

有効な16進数コードとは?

文字列が「有効な16進数コード(HEXコード)」であるためには、その文字列が 0〜9 の数字a〜f のアルファベット 以外の文字を含んでいない必要があります。

'3423ad' は有効な16進数コード
'4234es' は無効な16進数コード

今回は、文字列を引数として受け取り、それが有効な16進数コードかどうかを判定するJavaScript関数を作成します。

実装例:ループで1文字ずつ検証する方法

まずは、許容される文字をまとめた文字列(legend)を用意し、対象の文字列を先頭から1文字ずつチェックしていくシンプルなアプローチです。許可されていない文字が1つでも見つかった時点で false を返し、すべての文字が有効であれば true を返します。

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));
console.log(isHexValid(str2));

出力結果

コンソールには次のように表示されます。

false
true

別解:正規表現を使った簡潔な判定方法

実務では、正規表現を使うことで同じ処理を1行で記述できます。i フラグを付けると大文字(A〜F)も許可されるため、カラーコードなど大文字・小文字が混在する入力にも柔軟に対応できます。

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

console.log(isHexValidRegex('4234es')); // false
console.log(isHexValidRegex('3423ad')); // true
console.log(isHexValidRegex('ABC123')); // true(大文字もOK)

まとめ

  • 16進数コードの妥当性チェックでは、0〜9 および a〜f 以外の文字が含まれていないかを確認する
  • ループ方式では String.prototype.includes() を使うと直感的に実装できる
  • より簡潔に書きたい場合は正規表現 /^[0-9a-f]+$/i を活用すると便利
  1. JavaScriptでのSentryの使い方とは?主な機能をわかりやすく解説

    Sentryとは?JavaScript開発を支えるデバッグ・監視ツールSentryは、本番環境(プロダクション)で稼働しているコードを追跡できる、JavaScript向けの総合的なデバッグ・監視ツールパッケージです。開発環境では再現しないエラーや、ユーザーの端末上でのみ発生する不具合を効率的に把握できるため、Webアプリケーションの品質向上に欠かせない存在となっています。Sentryが提供する主な機能は以下の通りです。1. 環境情報と使用状況の記録によるバグ再現エラー発生時のOS、ブラウザ、デバイス、URLなどの環境情報やユーザーの操作状況を自動的に記録します。これにより、報告だけでは再現が難

  2. 正規表現を使って引用符で囲まれたテキストを抽出するJavaScriptコード

    この記事では、正規表現(RegExp)を使用して、文字列から引用符「" "」で囲まれたテキストを抽出する方法を、実際に動作するサンプルコードとともに解説します。ポイントは、/"(.*?)"/g というパターンです。.*? による最短一致と g フラグ(グローバル検索)を組み合わせることで、文中の引用符で挟まれた部分を取得できます。 サンプルコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /&