当用户在 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]$"))
但是如果你想在你的正则表达式中写入一组排除的字符,你可以输入
^在你的组里。当
^在组内
[^]它之后的任何字符都被排除在匹配之外。
正则表达式
[A-Z]将匹配任何字符 A-Z。正则表达式
[^A-Z]将匹配任何字符
不是 A-Z。
如果这就是您要查找的内容,您可以将您的声明更改为:
if (Regex.IsMatch(columnValue.ToString(), @"[^A-Za-z0-9\ ]"))
此语句将匹配包含任何不在该组中的任何字符的任何字符串。因此,如果他们键入“Hello World”,它将不匹配。如果他们输入“Hello! World”,它会匹配,因为“!”不在组中。
注:领先
^和尾随
$被移除。在这个正则表达式中,我们不关心字符串的长度,因为我们只匹配字符串中我们不希望出现的任何字符的字符。
