[英]How can I write a regex that will allow space and limit number of characters?
[英]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.