如何检查字符串,它是否仅包含键盘字符,即az,AZ,0-9和所有特殊字符(例如〜!@#$%^&*()_ + |} {“: ?> <,。/';] [=-)仅在US Enlish键盘中可用,即,用户应该能够在不键入任何ALT键的情况下从键盘键入字符串。 我不熟悉Regex来过滤满足我要求的字符串。
答案 0 :(得分:1)
英美键盘布局中立即可用的字符(不带Alt)的代码点在32到126之间。
在C#上,您可以完全跳过正则表达式
$ret = shell_exec("./randomScript.sh 'arg1' 'arg2' 'arg3' 2>&1");
它只是验证input.All(c=> c >= 32 && c <= 126);
内的所有char
是否与范围匹配。从技术上讲,由于character encoding,单个Unicode字符可以包含多个input
,但是只要您检查所有所有都在范围内,就可以了
或者如果您想使用正则表达式:
char
这是同一件事,Regex.IsMatch(input, @"^[\u0020-\u007E]*$"); //true on empty string
Regex.IsMatch(input, @"^[\u0020-\u007E]+$"); //must be at least one character
指定匹配必须从字符串的开头开始,括号内的所有内容都指定范围在32到126之间,除非它们以十六进制表示,{{1} }允许任何长度,+允许1至更大,并且^
指定匹配必须覆盖到字符串的末尾。
请注意,任何其他布局(英语-英国,国际英语等)的用户都会对您的限制感到非常恼火。