1

xmlファイルを作成する多言語アプリケーションがありますが、168から254までの拡張ASCII文字(¿⌐¬½¼¡«»░▓│┤╡╢╖╕╣║╗╜╛┐└┴┬├)はXMLタグでは想定されていませんそこで、ユーザーの立ち入りを制限したいと思います。

英数字、アンダースコア、ダッシュ以外のすべてを制限しようとしましたが、拡張ASCIIの一部であるアクセント付き文字を許可しませんでした。これが正規表現です"^[a-zA-Z0-9\s.\-_]+$"

2番目のオプションは、168から254までのすべての記号の文字列を作成し、文字列にそれらのいずれかが含まれているかどうかを確認することでしたが、信頼できる正確なソリューションかどうかはわかりません。

拡張ASCII文字セットの入力をフィルタリングする最良の方法は何ですか?

拡張ASCII文字セットテーブルへのリンク

4

3 に答える 3

3

むしろrange、文字クラスで使用して、特定の範囲の文字を使用して除外することができますHex Codes:-

[^\xA8-\xFE]

上記の正規表現は、指定された範囲内の文字を除くすべての文字に一致します。これらはあなたが投稿した範囲の16進コードです-[168, 254]

于 2012-12-20T10:48:19.397 に答える
3

@Odedの提案は適用可能でしたが、私は次の解決策を使用しました:

Dim filteredInput as string

Private const XML_RESTRICTED_CHARACTERS as string ="[☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼#$%&()*+,-./:;<=>?@[\]^_`¢£¥₧ƒªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■""}{]"

filteredInput =Regex.Replace(strInput.ToLower(), XML_RESTRICTED_CHARACTERS, "")
于 2012-12-21T16:34:12.453 に答える
1

2番目のオプションは、168から254までのすべての記号の文字列を作成し、文字列にそれらのいずれかが含まれているかどうかを確認することでしたが、信頼できる正確なソリューションかどうかはわかりません。

はい、これは信頼性が高く正確なソリューションです。また、正規表現よりも軽量です。

于 2012-12-20T10:44:50.383 に答える