簡體   English   中英

如何檢查字符串僅包含 en-us 鍵盤字符?

[英]How to check a string contains only en-us keyboard characters?

如何檢查一個字符串,它是否只包含鍵盤字符,即az、AZ、0-9,以及所有特殊字符(如~!@#$%^&*()_+|}{":?>< ,./';][=-) 僅在美國英語鍵盤中可用。即,用戶應該能夠從鍵盤輸入字符串而無需鍵入任何 ALT 鍵。我不熟悉 Regex 來過濾字符串這滿足我的要求。

英美鍵盤布局中立即(不帶 Alt)可用字符的代碼點在 32 到 126 之間。

在 C# 上,您可以通過執行完全跳過 Regex

input.All(c=> c >= 32 && c <= 126);

它只是驗證input中的所有char是否與范圍匹配。 從技術上講,由於字符編碼,單個 Unicode 字符可能涉及多個char ,但只要您檢查所有這些char都在范圍內,就可以了。

或者如果你想要正則表達式:

Regex.IsMatch(input, @"^[\u0020-\u007E]*$"); //true on empty string

Regex.IsMatch(input, @"^[\u0020-\u007E]+$"); //must be at least one character

是一樣的, ^指定匹配必須從字符串的開頭開始,括號內的所有內容指定范圍,在 32 到 126 之間,除了它們是用十六進制寫的, *允許任何長度,+ 允許 1 到更多,和$指定匹配必須覆蓋到字符串的結尾。

請注意,任何其他布局(英語-英國、國際英語等)的用戶都會對您的限制感到非常惱火。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM