2012-12-20 77 views
1

我有多語言應用程序,它可以創建xml文件,但擴展ASCII字符從168到254(? └┴┬├)不在XML標籤中,所以我想限制用戶輸入。正則表達式來限制擴展的ASCII字符集

我試圖限制除字母數字,下劃線和短劃線之外的所有內容,但它不允許重音字符óçõ是擴展ASCII的一部分。這裏是regx "^[a-zA-Z0-9\s.\-_]+$"

第二個選擇是創建一個從168到254的所有符號的字符串,並檢查字符串是否包含其中的任何一個,但不知道它是否可靠和準確的解決方案。

什麼是篩選擴展ASCII字符集輸入的最佳方法?

Link到擴展ASCII字符集表

回答

3

雖然@Oded建議是適用的,但我用以下解決方案:

Dim filteredInput as string 

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

filteredInput =Regex.Replace(strInput.ToLower(), XML_RESTRICTED_CHARACTERS, "") 
1

第二個選項是創建從168到254的所有符號的字符串,並檢查是否字符串包含任何人,但不知道這是否是可靠和準確的解決方案。

是的,這是一個可靠和準確的解決方案。它也比正則表達式更輕量。

3

而是你可以在字符類使用range,用他們的Hex Codes排除特定的字符範圍: -

[^\xA8-\xFE] 

上述正則表達式匹配除了那些在給定範圍內的任何字符。這些都是爲您發佈的範圍內的十六進制代碼 - [168, 254]

+0

是的,他們是從128-255。由於128到167是重音字符(例如óç)正在使用的外語,所以我不想限制他們 – Munawar

+0

@Needo ..好的,那麼我發佈的範圍將工作。\ –

+0

添加上述範圍後,它是我的regx:^(az | AZ | 0-9)* [^ \ xA8- \ xFE /> |'&%$ @!〜',。/?\\ <*:「」] * $但它也限制在以下xA8? – Munawar