正则表达式以限制扩展ASCII字符集

时间:2012-12-20 10:42:54

标签: regex vb.net validation

我有多语言应用程序可以创建xml文件,但是168到254之间的扩展ASCII字符(¿¬¬½¼¡»»░▓│┤╡╢╖╕╣║╗╜╛┐└┴┬├)不应该被认为是在XML标签中,我想限制用户进入。

我尝试限制除字母数字,下划线和短划线之外的所有内容,但它不允许重音字符óçç,它们是扩展ASCII的一部分。这是regx "^[a-zA-Z0-9\s.\-_]+$"

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

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

Link到扩展ASCII字符集表

3 个答案:

答案 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的所有符号的字符串,并检查字符串是否包含任何符号,但不确定它是否是可靠和准确的解决方案。

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