teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

修正

2021/01/15 09:16

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -45,16 +45,16 @@
45
45
  ```JavaScript
46
46
  const convertDigitToMathematicalAlphanumericSymbols = src => {
47
47
  const table = {
48
- 0: '(?:0|0|????|????|????|????|????)',
48
+ 0: '(?:0|????|????|????|????|????)',
49
- 1: '(?:1|1|????|????|????|????|????)',
49
+ 1: '(?:1|????|????|????|????|????)',
50
- 2: '(?:2|2|????|????|????|????|????)',
50
+ 2: '(?:2|????|????|????|????|????)',
51
- 3: '(?:3|3|????|????|????|????|????)',
51
+ 3: '(?:3|????|????|????|????|????)',
52
- 4: '(?:4|4|????|????|????|????|????)',
52
+ 4: '(?:4|????|????|????|????|????)',
53
- 5: '(?:5|5|????|????|????|????|????)',
53
+ 5: '(?:5|????|????|????|????|????)',
54
- 6: '(?:6|6|????|????|????|????|????)',
54
+ 6: '(?:6|????|????|????|????|????)',
55
- 7: '(?:7|7|????|????|????|????|????)',
55
+ 7: '(?:7|????|????|????|????|????)',
56
- 8: '(?:8|8|????|????|????|????|????)',
56
+ 8: '(?:8|????|????|????|????|????)',
57
- 9: '(?:9|9|????|????|????|????|????)'
57
+ 9: '(?:9|????|????|????|????|????)'
58
58
  }
59
59
  return src.replaceAll(/\d/g, a => table[a]);
60
60
  };

4

追記

2021/01/15 09:16

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -38,4 +38,32 @@
38
38
  }
39
39
  ```
40
40
 
41
- 上記コードで success が表示されます。やはり node v15.5.0 が対応していないようです。
41
+ 上記コードで success が表示されます。やはり node v15.5.0 が対応していないようです。
42
+
43
+ ## 追記
44
+
45
+ ```JavaScript
46
+ const convertDigitToMathematicalAlphanumericSymbols = src => {
47
+ const table = {
48
+ 0: '(?:0|0|????|????|????|????|????)',
49
+ 1: '(?:1|1|????|????|????|????|????)',
50
+ 2: '(?:2|2|????|????|????|????|????)',
51
+ 3: '(?:3|3|????|????|????|????|????)',
52
+ 4: '(?:4|4|????|????|????|????|????)',
53
+ 5: '(?:5|5|????|????|????|????|????)',
54
+ 6: '(?:6|6|????|????|????|????|????)',
55
+ 7: '(?:7|7|????|????|????|????|????)',
56
+ 8: '(?:8|8|????|????|????|????|????)',
57
+ 9: '(?:9|9|????|????|????|????|????)'
58
+ }
59
+ return src.replaceAll(/\d/g, a => table[a]);
60
+ };
61
+
62
+ if ("????????日 ????????:????????".match(convertDigitToMathematicalAlphanumericSymbols("9"))) {
63
+ console.log("ありまぁす");
64
+ } else {
65
+ console.log("ありません");
66
+ }
67
+ ```
68
+
69
+ キャラクターセットを使わない方針に変更しました。今度は大丈夫そうです。

3

追記

2021/01/15 08:42

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -28,4 +28,14 @@
28
28
 
29
29
  ## 追記
30
30
 
31
- node v15.5.0 において、このコードは正常に動作せず "9" を与えても検索が成功します。原因は今のところ不明ですが、node が対応していないために一つの文字が複数の文字と解釈されている可能性があります。
31
+ node v15.5.0 において、このコードは正常に動作せず "9" を与えても検索が成功します。原因は今のところ不明ですが、node が対応していないために一つの文字が複数の文字と解釈されている可能性があります。
32
+
33
+ ## 追記
34
+
35
+ ```JavaScript
36
+ if ("????????日 ????????:????????".match(/[????]/)) {
37
+ console.log("success");
38
+ }
39
+ ```
40
+
41
+ 上記コードで success が表示されます。やはり node v15.5.0 が対応していないようです。

2

修正

2021/01/15 08:37

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -24,4 +24,8 @@
24
24
  if ("????????日 ????????:????????".match(convertDigitToMathematicalAlphanumericSymbols("22"))) {
25
25
  console.log("ありまぁす");
26
26
  }
27
- ```
27
+ ```
28
+
29
+ ## 追記
30
+
31
+ node v15.5.0 において、このコードは正常に動作せず "9" を与えても検索が成功します。原因は今のところ不明ですが、node が対応していないために一つの文字が複数の文字と解釈されている可能性があります。

1

修正

2021/01/15 08:31

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [数学英数字記号-ウィキペディア](https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols)
4
4
 
5
- 検索文字列中に現れる 2 という文字を "[2????????????????????]" という文字列に置換し、あらためそれを正規表現として解釈させると現実的なコードになると思います。
5
+ 検索文字列中に現れる 2 という文字を "[2????????????????????]" という文字列に置換し、あらためそれを正規表現として解釈させると現実的なコードになると思います。
6
6
 
7
7
  ```JavaScript
8
8
  const convertDigitToMathematicalAlphanumericSymbols = src => {
@@ -21,8 +21,6 @@
21
21
  return src.replaceAll(/\d/g, a => table[a]);
22
22
  };
23
23
 
24
- console.log(convertDigitToMathematicalAlphanumericSymbols("12345"));
25
-
26
24
  if ("????????日 ????????:????????".match(convertDigitToMathematicalAlphanumericSymbols("22"))) {
27
25
  console.log("ありまぁす");
28
26
  }