1

我有创建 xml 文件的多语言应用程序,但 XML 标记中不应包含从 168 到 254 的扩展 ASCII 字符(¿⌐¬½¼¡«»░▓│┤╡╢╖╕╣║╗╜╛┐└┴┬├)所以,我想限制用户进入。

我尝试限制除了字母数字、下划线和破折号之外的所有内容,但它不允许重音字符 ó ç õ 是扩展 ASCII 的一部分。这是正则表达式"^[a-zA-Z0-9\s.\-_]+$"

第二个选项是创建一个从 168 到 254 的所有符号的字符串,并检查字符串是否包含其中任何一个,但不确定它是否是可靠和准确的解决方案。

过滤扩展 ASCII 字符集输入的最佳方法是什么?

链接到扩展 ASCII 字符集表

4

3 回答 3

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 回答
3

相反,您可以range在字符类中使用,以使用以下字符排除特定范围的字符Hex Codes:-

[^\xA8-\xFE]

上面的正则表达式将匹配除给定范围内的任何字符。这些是您发布的范围的十六进制代码 -[168, 254]

于 2012-12-20T10:48:19.397 回答
1

第二个选项是创建一个从 168 到 254 的所有符号的字符串,并检查字符串是否包含其中任何一个,但不确定它是否是可靠和准确的解决方案。

是的,这是一个可靠且准确的解决方案。它也比正则表达式更轻量级。

于 2012-12-20T10:44:50.383 回答