正規表現を使ってサロゲートや特殊区分の文字を除外したい
UnityC#でアプリを作成しており、
Android側の入力文字とiPhone側の入力文字を一致させるため、
C#のRegaxを使ってReplaceしようとしているのですがうまくいきません。
下記のようなコードを書いているのですが、
Androidの実機で0、1、8などが削除されてしまい
入力可能な文字が除外されてしまいます。
0=0x30 1=0x31 なので除外対尾にはならないと思うのですが、
除外される理由がわかっていません。
ご教授いただけないでしょうか?
■Unicode参考サイト
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/index_u.html
■除外したい正規表現リスト
private static readonly List<string> RegexList = new List<string>()
{
"[\u2600-\u26FF]", // Unicodeのその他の記号(Miscellaneous Symbols)
"[\u0530-\u058F]", // Unicodeのアルメニア文字(Armenian)
"[\u0A00-\u0A7F]", // Unicodeのグルムキー文字(Gurmukhi)
"[\uD800-\uDB7F]", // 上位サロゲート(ファイルなし)(High Surrogates)
"[\uDB80-\uDBFF]", // 上位私用サロゲート(ファイルなし)(High Private Use Surrogates)
"[\uDC00-\uDFFF]", // 下位サロゲート(ファイルなし)(Low Surrogates)
"[\uE000-\uF8FF]", // 私用領域(ファイルなし)(Private Use Area)
"[¥u{EFF80}-¥u{EFFFF}]", // 未割り当て(第14面)(Unassigned)
"[¥u{F0000}-¥u{FFFFF}]", // 補助私用領域A - 未割り当て(第15面)(Supplementary Private Use Area-A)
"[¥u{100000}-¥u{10FFFF}]",// 補助私用領域B - 未割り当て(第16面)(Supplementary Private Use Area-B)
};
■内部処理
・正規表現リスト内をループして該当すれば空文字にする。
・inputString はアプリ内でキーボード入力された文字列が入っています。
foreach (var regex in RegexList)
{
inputString = Regex.Replace(inputString, regex, "");
}
■開発環境
VisualStudio2015
Unity5.6.3p1