[Java]バイトコードの正規表現チェック

Javaでバイトコードの範囲チェックを試してみた。


■1. 半角数字の範囲内かチェック

結果 -> 文字コード範囲内なのでチェックできた。おぉ~。

 


■2. ひらがなの範囲内かチェック

結果 -> 文字コード範囲内なのでtrueが返ってきた。おぉ~。

 


■3. 次は以下のバイトコードでは正しい結果が得られなかった。。。。

結果 -> 文字コード範囲内だがfalseが返ってきた。なぜだ!?

調べてみると「D000-DFFF」は代用対(サロゲートペア)に使われるそうだ。
Unicode一覧 D000-DFFF
その影響で正しくチェックできていないっぽい。。。

結果 -> 0xFFFDで範囲チェックを行ってみるとtrueとなった。java内でFFFDの扱いになってるのかなぁ~。。。

調べてみると、「該当する文字が存在しない場合は’0xFFFD(REPLACEMENT CHARACTER)’の文字に変換されます。 」のようだ。なるほど。

 

今度D000-DFFFを判定する方法を調べてみることにしよう。
おわり。