我有多语言应用程序可以创建xml文件,但是168到254之间的扩展ASCII字符(¿¬¬½¼¡»»░▓│┤╡╢╖╕╣║╗╜╛┐└┴┬├)不应该被认为是在XML标签中,我想限制用户进入。
我尝试限制除字母数字,下划线和短划线之外的所有内容,但它不允许重音字符óçç,它们是扩展ASCII的一部分。这是regx "^[a-zA-Z0-9\s.\-_]+$"
第二个选项是创建一个从168到254的所有符号的字符串,并检查字符串是否包含任何符号,但不确定它是否是可靠和准确的解决方案。
过滤扩展ASCII字符集输入的最佳方法是什么?
Link到扩展ASCII字符集表
答案 0 :(得分:3)
相反,您可以在字符类中使用range
,使用Hex Codes
排除特定范围的字符: -
[^\xA8-\xFE]
上述正则表达式将匹配除给定范围内的任何字符。这些是您发布的范围的十六进制代码 - [168, 254]
答案 1 :(得分:3)
尽管@Oded建议适用,但我使用了以下解决方案:
Dim filteredInput as string
Private const XML_RESTRICTED_CHARACTERS as string ="[☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼#$%&()*+,-./:;<=>?@[\]^_`¢£¥₧ƒªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■""}{]"
filteredInput =Regex.Replace(strInput.ToLower(), XML_RESTRICTED_CHARACTERS, "")
答案 2 :(得分:1)
第二个选项是创建一个从168到254的所有符号的字符串,并检查字符串是否包含任何符号,但不确定它是否是可靠和准确的解决方案。
是的,这是一个可靠而准确的解决方案。它也比正则表达式更轻量级。