繁体   English   中英

如何不允许特殊字符,但在正则表达式中允许空格?

[英]How do I not allow special characters, but allow space in regex?

当用户在datagridview中输入特殊字符时,我需要填充一条错误消息。 截至目前,我有以下内容:

if (Regex.IsMatch(columnValue.ToString(),"^[A-Za-z0-9]$"))
                {
                    MessageBox.Show("You may not use special characters.", "Saving not allowed at this time", MessageBoxButtons.OK, MessageBoxIcon.Error);  

此正则表达式有效,并且不允许特殊字符,但是,如果字符之间存在空格,则应属于if语句。

如何允许使用空格而不是特殊字符?

谢谢,

我认为您只想在正则表达式中添加一个空格:

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]$"))

更新资料

看来您可能想要一个正则表达式,该正则表达式排除了组中的字符。

您当前的正则表达式是从字符串^的开头到字符串$的结尾查找A-Za-z0-9组中的一个字符。 如果要匹配完全相反的符号,可以使用not运算符! Regex.IsMatch之前,例如:

if (!Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))

但是,如果要在正则表达式中写一个排除的字符组,可以在组中加上^ ^在组[^] ,其后的任何字符都将从匹配中排除。

正则表达式[AZ]将匹配任何字符AZ。 正则表达式[^AZ]将与任何字符NOT AZ匹配。

如果这是您要查找的内容,则可以将语句更改为:

if (Regex.IsMatch(columnValue.ToString(), @"[^A-Za-z0-9\ ]"))

该语句将匹配组中不包含任何字符的任何字符串。 因此,如果他们键入“ Hello World”,则将不匹配。 如果他们键入“ Hello!World”,它将匹配,因为“!” 不在群组中。

注意:前^和后$被删除。 在这个正则表达式中,我们不在乎字符串的长度,因为我们只匹配一个我们不希望在字符串中任何地方出现的字符。

if (Regex.IsMatch(columnValue.ToString(),"^[A-Za-z0-9 ]+$"))
{
   MessageBox.Show("You may not use special characters.", "Saving not allowed at this time", MessageBoxButtons.OK, MessageBoxIcon.Error); 
}

或作为单个布尔检查来测试

bool isValid = Regex.IsMatch(columnValue, "^[a-z0-9 ]+$", RegexOptions.IgnoreCase);

在字符类中添加一个空格,即使用^[A-Za-z0-9 ]$代替^[A-Za-z0-9]$ 这仍将禁止其他空格字符,例如tab

您可以包括所有数字,字符串和空格:)

"^[a-z]|[A-Z]|[0-9]|[ ]$"

要么

"^[\d+]|[\w+]|[ ]$"

为什么不尝试此正则表达式: [a-zA-Z0-9\\s]+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM