1. ホーム
  2. javascript

[解決済み] 文字列が有効な16進カラー表現であるかどうかを確認する方法は?

2022-05-09 10:27:51

質問

例えば

AA33FF = 有効な16進色

Z34FF9 = 無効な16進数色(Zが含まれている)。

AA33FF11 = 無効な16進数色(余分な文字がある)

解決方法は?

/^#[0-9A-F]{6}$/i.test('#AABBCC')

詳しく説明すると

^ -> 一致開始

# -> ハッシュ

[0-9A-F] -> 0から9までの任意の整数とAからFまでの任意の文字

{6} -> 前のグループの出現回数がちょうど6回

$ -> マッチエンド

i -> ケースを無視する

3文字のHEXコードに対応する必要がある場合は、以下をご利用ください。

/^#([0-9A-F]{3}){1,2}$/i.test('#ABC')

ここでの唯一の違いは

 [0-9A-F]{6}

は次のように置き換えられます。

([0-9A-F]{3}){1,2}

これは、6文字にぴったりマッチするのではなく、3文字にぴったりマッチするが、1回か2回しかマッチしないことを意味する。そのため ABCAABBCC でなく ABCD

複合的な解決策:

var reg=/^#([0-9a-f]{3}){1,2}$/i;
console.log(reg.test('#ABC')); //true
console.log(reg.test('#AABBCC')); //true