当用户在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);
Run Code Online (Sandbox Code Playgroud)
这个正则表达式工作,并且不允许使用特殊字符,但如果字符之间有空格,则应该允许使用if语句.
如何让它允许空格,而不是特殊字符?
谢谢,
我想你只想在正则表达式中添加一个空格:
if (Regex.IsMatch(columnValue.ToString(),"^[ A-Za-z0-9]$"))
Run Code Online (Sandbox Code Playgroud)
编写正则表达式时,使用逐字字符串运算符通常是一个好习惯,@因为许多特殊表达式要求您使用反斜杠字符.
if (Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))
Run Code Online (Sandbox Code Playgroud)
如果您明确告诉正则表达式忽略模式中的空格,则需要转义空格字符.
if (Regex.IsMatch(columnValue.ToString(), @"^[\ A-Za-z0-9]$", RegexOption.IgnorePatternWhitespace))
Run Code Online (Sandbox Code Playgroud)
如果您希望它们能够使用任何空格字符(空格,制表符,换行符等),则可以使用空格字符类 \s
if (Regex.IsMatch(columnValue.ToString(), @"^[\sA-Za-z0-9]$"))
Run Code Online (Sandbox Code Playgroud)
更新
看起来您可能想要一个排除组中字符的正则表达式.
您当前的正则表达式从字符串的开头到字符串^的结尾,$正好是组中的一个字符A-Za-z0-9.如果你想匹配完全相反的,你可以!在你之前使用not运算符Regex.IsMatch,例如:
if (!Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))
Run Code Online (Sandbox Code Playgroud)
但是,如果您想在正则表达式中编写一组被排除的字符,则可以在组中添加一个字符^.当在^组内部时[^],在其后面的任何字符都将从匹配中排除.
正则表达式[A-Z]将匹配任何字符AZ.正则表达式[^A-Z]将匹配任何字符NOT AZ.
如果这是您正在寻找的,您可以将您的声明更改为:
if (Regex.IsMatch(columnValue.ToString(), @"[^A-Za-z0-9\ ]"))
Run Code Online (Sandbox Code Playgroud)
此语句将匹配包含组中不包含的任何字符的任何字符串.所以,如果他们输入"Hello World"就不会匹配.如果他们输入"Hello!World",它会匹配,因为"!" 不在小组中.
注意:删除了前导^和尾随$.在这个正则表达式中,我们不关心字符串的长度,因为我们只匹配字符串中我们没有想到的字符.
| 归档时间: |
|
| 查看次数: |
31971 次 |
| 最近记录: |