我认为您只想在正则表达式中添加一个空格:
if (Regex.IsMatch(columnValue.ToString(),"^[ A-Za-z0-9]$"))
在编写正则表达式时,使用逐字字符串运算符通常是一个好习惯,@
因为许多特殊表达式要求您使用反斜杠字符。
if (Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))
如果您明确告诉正则表达式忽略模式中的空格,则需要转义空格字符。
if (Regex.IsMatch(columnValue.ToString(), @"^[\ A-Za-z0-9]$", RegexOption.IgnorePatternWhitespace))
如果您希望它们能够使用任何空白字符(空格、制表符、换行符等),您可以使用空白字符类\s
if (Regex.IsMatch(columnValue.ToString(), @"^[\sA-Za-z0-9]$"))
更新
看来您可能想要一个排除组中字符的正则表达式。
您当前的正则表达式正在从字符串的开头到字符串^
的结尾$
查找 group 中的一个字符A-Za-z0-9
。如果您想匹配完全相反的内容,您可以在!
之前使用 not 运算符Regex.IsMatch
,例如:
if (!Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))
但是如果你想在你的正则表达式中写一个被排除的字符组,你可以^
在你的组中放一个。当^
位于组内时,[^]
它后面的任何字符都将被排除在匹配之外。
正则表达式[A-Z]
将匹配任何字符 AZ。正则表达式[^A-Z]
将匹配任何字符NOT AZ。
如果那是您正在寻找的内容,您可以将您的声明更改为:
if (Regex.IsMatch(columnValue.ToString(), @"[^A-Za-z0-9\ ]"))
该语句将匹配包含任何不在组中的字符的任何字符串。因此,如果他们键入“Hello World”,它将不匹配。如果他们输入“Hello!World”,它会匹配,因为“!” 不在组内。
注意:前导^
和尾随$
已删除。在这个正则表达式中,我们不关心字符串的长度,因为我们只匹配字符串中任何我们不期望的字符。