回答編集履歴

5

修正

2021/01/15 09:16

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -92,25 +92,25 @@
92
92
 
93
93
  const table = {
94
94
 
95
- 0: '(?:0|0|????|????|????|????|????)',
95
+ 0: '(?:0|????|????|????|????|????)',
96
96
 
97
- 1: '(?:1|1|????|????|????|????|????)',
97
+ 1: '(?:1|????|????|????|????|????)',
98
98
 
99
- 2: '(?:2|2|????|????|????|????|????)',
99
+ 2: '(?:2|????|????|????|????|????)',
100
100
 
101
- 3: '(?:3|3|????|????|????|????|????)',
101
+ 3: '(?:3|????|????|????|????|????)',
102
102
 
103
- 4: '(?:4|4|????|????|????|????|????)',
103
+ 4: '(?:4|????|????|????|????|????)',
104
104
 
105
- 5: '(?:5|5|????|????|????|????|????)',
105
+ 5: '(?:5|????|????|????|????|????)',
106
106
 
107
- 6: '(?:6|6|????|????|????|????|????)',
107
+ 6: '(?:6|????|????|????|????|????)',
108
108
 
109
- 7: '(?:7|7|????|????|????|????|????)',
109
+ 7: '(?:7|????|????|????|????|????)',
110
110
 
111
- 8: '(?:8|8|????|????|????|????|????)',
111
+ 8: '(?:8|????|????|????|????|????)',
112
112
 
113
- 9: '(?:9|9|????|????|????|????|????)'
113
+ 9: '(?:9|????|????|????|????|????)'
114
114
 
115
115
  }
116
116
 

4

追記

2021/01/15 09:16

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -79,3 +79,59 @@
79
79
 
80
80
 
81
81
  上記コードで success が表示されます。やはり node v15.5.0 が対応していないようです。
82
+
83
+
84
+
85
+ ## 追記
86
+
87
+
88
+
89
+ ```JavaScript
90
+
91
+ const convertDigitToMathematicalAlphanumericSymbols = src => {
92
+
93
+ const table = {
94
+
95
+ 0: '(?:0|0|????|????|????|????|????)',
96
+
97
+ 1: '(?:1|1|????|????|????|????|????)',
98
+
99
+ 2: '(?:2|2|????|????|????|????|????)',
100
+
101
+ 3: '(?:3|3|????|????|????|????|????)',
102
+
103
+ 4: '(?:4|4|????|????|????|????|????)',
104
+
105
+ 5: '(?:5|5|????|????|????|????|????)',
106
+
107
+ 6: '(?:6|6|????|????|????|????|????)',
108
+
109
+ 7: '(?:7|7|????|????|????|????|????)',
110
+
111
+ 8: '(?:8|8|????|????|????|????|????)',
112
+
113
+ 9: '(?:9|9|????|????|????|????|????)'
114
+
115
+ }
116
+
117
+ return src.replaceAll(/\d/g, a => table[a]);
118
+
119
+ };
120
+
121
+
122
+
123
+ if ("????????日 ????????:????????".match(convertDigitToMathematicalAlphanumericSymbols("9"))) {
124
+
125
+ console.log("ありまぁす");
126
+
127
+ } else {
128
+
129
+ console.log("ありません");
130
+
131
+ }
132
+
133
+ ```
134
+
135
+
136
+
137
+ キャラクターセットを使わない方針に変更しました。今度は大丈夫そうです。

3

追記

2021/01/15 08:42

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -59,3 +59,23 @@
59
59
 
60
60
 
61
61
  node v15.5.0 において、このコードは正常に動作せず "9" を与えても検索が成功します。原因は今のところ不明ですが、node が対応していないために一つの文字が複数の文字と解釈されている可能性があります。
62
+
63
+
64
+
65
+ ## 追記
66
+
67
+
68
+
69
+ ```JavaScript
70
+
71
+ if ("????????日 ????????:????????".match(/[????]/)) {
72
+
73
+ console.log("success");
74
+
75
+ }
76
+
77
+ ```
78
+
79
+
80
+
81
+ 上記コードで success が表示されます。やはり node v15.5.0 が対応していないようです。

2

修正

2021/01/15 08:37

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -51,3 +51,11 @@
51
51
  }
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ ## 追記
58
+
59
+
60
+
61
+ node v15.5.0 において、このコードは正常に動作せず "9" を与えても検索が成功します。原因は今のところ不明ですが、node が対応していないために一つの文字が複数の文字と解釈されている可能性があります。

1

修正

2021/01/15 08:31

投稿

Zuishin
Zuishin

スコア28662

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 検索文字列中に現れる 2 という文字を "[2????????????????????]" という文字列に置換し、あらためそれを正規表現として解釈させると現実的なコードになると思います。
9
+ 検索文字列中に現れる 2 という文字を "[2????????????????????]" という文字列に置換し、あらためそれを正規表現として解釈させると現実的なコードになると思います。
10
10
 
11
11
 
12
12
 
@@ -44,10 +44,6 @@
44
44
 
45
45
 
46
46
 
47
- console.log(convertDigitToMathematicalAlphanumericSymbols("12345"));
48
-
49
-
50
-
51
47
  if ("????????日 ????????:????????".match(convertDigitToMathematicalAlphanumericSymbols("22"))) {
52
48
 
53
49
  console.log("ありまぁす");