回答編集履歴

1

サンプル

2019/02/19 03:35

投稿

退会済みユーザー
test CHANGED
@@ -1 +1,87 @@
1
1
  普通に桁数チェックと `isNaN(parseInt(COLOR,16))` 16進数評価だけでいいのでは?
2
+
3
+
4
+
5
+ # 追記([サンプル](https://ideone.com/kjPmQF))
6
+
7
+
8
+
9
+ ```
10
+
11
+ // Javascript Shell にて実行
12
+
13
+ function check_color(color) {
14
+
15
+ color = color.toLowerCase();
16
+
17
+
18
+
19
+ if (color.length !=3 && color.length !=6) {
20
+
21
+ // ブラウザで実行する場合は console.log
22
+
23
+ print("ERROR length : " + color.length);
24
+
25
+ return false;
26
+
27
+ }
28
+
29
+
30
+
31
+ if (isNaN(parseInt(color, 16))) {
32
+
33
+ // ブラウザで実行する場合は console.log
34
+
35
+ print("ERROR isNaN : " + color);
36
+
37
+ return false;
38
+
39
+ }
40
+
41
+
42
+
43
+ var _hex = parseInt(color, 16).toString(16).toLowerCase();
44
+
45
+ while(_hex.length < color.length) {
46
+
47
+ _hex = "0" + _hex;
48
+
49
+ }
50
+
51
+
52
+
53
+ if (_hex != color) {
54
+
55
+ // ブラウザで実行する場合は console.log
56
+
57
+ print("ERROR NOT EQ : " + color);
58
+
59
+ return false;
60
+
61
+ }
62
+
63
+ // ブラウザで実行する場合は console.log
64
+
65
+ print("OK : " + color);
66
+
67
+ return true;
68
+
69
+ }
70
+
71
+
72
+
73
+ check_color("12"); // length error
74
+
75
+ check_color("1234"); // length error
76
+
77
+ check_color("12345"); // length error
78
+
79
+ check_color("KKKKKK"); // 16進数ではない
80
+
81
+ check_color("AKKKKK"); // 16進数ではない
82
+
83
+ check_color("000000"); // 正常
84
+
85
+ check_color("00FF00"); // 正常
86
+
87
+ ```