回答編集履歴
1
透明度に関して追加
test
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
カラーコードは`#12b`か`#12abef`のように基本的に3桁か6桁の16進数で出来ています。
|
2
|
+
|
3
|
+
※最新のブラウザは4桁、8桁にも対応しており、透明度込みのカラーコードと判断します
|
4
|
+
|
5
|
+
[https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgba](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgba)
|
2
6
|
|
3
7
|
|
4
8
|
|
5
9
|
なので`.`のようなワイルドカードで指定しまうのではなく、`[0-9a-fA-F]`のような16進数の数値として妥当な文字列だけ受け付けることで一歩前進します。
|
6
10
|
|
7
|
-
また、`+`という風に無限長の文字列を受け付けるのではなく、`{3,
|
11
|
+
また、`+`という風に無限長の文字列を受け付けるのではなく、`{3,8}`で指定すれば、
|
8
12
|
|
9
13
|
質問文のような回避策を使わなくてもある程度行けるんじゃないですかね?
|
10
14
|
|
11
|
-
(
|
15
|
+
(5,7桁のような不正なコードも受理されるのでもう少し改良したい所ではありますが)
|
12
16
|
|
13
17
|
|
14
18
|
|