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を活用すると便利
-
JavaScriptでのSentryの使い方とは?主な機能をわかりやすく解説
Sentryとは?JavaScript開発を支えるデバッグ・監視ツールSentryは、本番環境(プロダクション)で稼働しているコードを追跡できる、JavaScript向けの総合的なデバッグ・監視ツールパッケージです。開発環境では再現しないエラーや、ユーザーの端末上でのみ発生する不具合を効率的に把握できるため、Webアプリケーションの品質向上に欠かせない存在となっています。Sentryが提供する主な機能は以下の通りです。1. 環境情報と使用状況の記録によるバグ再現エラー発生時のOS、ブラウザ、デバイス、URLなどの環境情報やユーザーの操作状況を自動的に記録します。これにより、報告だけでは再現が難
-
正規表現を使って引用符で囲まれたテキストを抽出するJavaScriptコード
この記事では、正規表現(RegExp)を使用して、文字列から引用符「" "」で囲まれたテキストを抽出する方法を、実際に動作するサンプルコードとともに解説します。ポイントは、/"(.*?)"/g というパターンです。.*? による最短一致と g フラグ(グローバル検索)を組み合わせることで、文中の引用符で挟まれた部分を取得できます。 サンプルコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /&