回答編集履歴
3
日本語表現を訂正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
javascipt上で文字はUTF16で表現されるため、ほとんどの文字はjavascript
|
17
|
+
javascipt上で文字はUTF16で表現されるため、ほとんどの文字はjavascriptのstring一文字で表現できるのですが、漢字にはUTF16一文字では表現できないものがあります。それらの文字はサロゲートペアと呼ばれ、「string二文字」で一つの文字に、つまりjavascript上length===2であるようなstringが漢字一文字を表すことがあるのですね。そのような文字コードの範囲は以下のようになってます。
|
18
18
|
|
19
19
|
|
20
20
|
|
2
追記
test
CHANGED
@@ -10,7 +10,29 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
|
13
|
+
追記2:Lhankor_Mhyさんが解説してくださっているので、少しだけ補足的にコメントします。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
javascipt上で文字はUTF16で表現されるため、ほとんどの文字はjavascriptでの1文字で表現できるのですが、漢字にはUTF16一文字では表現できないものがあり、それらはサロゲートペアと呼ばれるUTF16コード2つで一文字になります。つまりjavascript上length===2であるようなstringが漢字一文字を表すことがあるのですね。そのような文字コードの範囲は以下のようになってます。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
\uD800-\uDBFFこれはサロゲートペア1文字目の範囲
|
22
|
+
|
23
|
+
\uDC00-\uDFFFこれがサロゲートペア2文字目の範囲
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
修正後の質問にかかれているパターンにはこのサロゲートペア範囲を対象にしていますのでこの点も注意して読み解いてみてください!
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
----
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
訂正1:質問コメントで下記がやりたいことではないと分かりましたので、これ以降は無視してください。
|
14
36
|
|
15
37
|
|
16
38
|
|
1
訂正
test
CHANGED
@@ -3,6 +3,16 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
そういう判定をしたい場合、UNICODEのコードポイント表を参照して「ここからこの範囲を除外」というように調べないといけないと思います。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
----
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
訂正:質問コメントで下記がやりたいことではないと分かりましたので、これ以降は無視してください。
|
14
|
+
|
15
|
+
|
6
16
|
|
7
17
|
|
8
18
|
|