1

我想知道有没有办法确保用户在文本框中输入数字和字母,如果没有提示消息?我有它如下:

if(!Regex.IsMatch(string, @"^[a-zA-Z]+$") && !Regex.IsMatch(string, @"^[1-9]+$"))
{  
    MessageBox.Show("Please Enter both numbers and letters");
    return;
}

所以我在这里想说的是,如果字符串没有字母并且如果字符串没有数字,则提示错误。但是,如果你输入所有字母(或数字),没有错误提示,所以我想知道是否有办法做到这一点。我研究了这些问题,除了如何允许某些字符之外没有发现任何东西。

4

3 回答 3

2

目前,您的代码说

如果字符串不完全由字母组成,也不完全由数字组成,则显示消息

这几乎与您所追求的完全相反。

要修复它,您需要将“不完全由”更改为“不包含”,并将“和”更改为“或”:

if(!Regex.IsMatch(string, @"[a-zA-Z]") || !Regex.IsMatch(string, @"[1-9]"))
{  
    MessageBox.Show("Please Enter both numbers and letters");
    return;
}

and正则表达式现在只查找单个字母或数字,而or.

如果您想确保您的输入包含字母和数字,您可以单独执行以下步骤:

if(Regex.IsMatch(string, @"[^a-zA-Z0-9]"))
{  
    MessageBox.Show("Please Enter only numbers and letters");
    return;
}
于 2013-01-31T17:15:07.917 回答
1

简单的想:

[a-zA-Z0-9]+是您可能想尝试的正则表达式。

[a-zA-Z0-9\s]+是单词/数字之间允许有空格的正则表达式。

在这里试试你的正则表达式:http ://regexhero.net/

于 2013-01-31T17:15:09.627 回答
1

您要做的是在字符串没有任何字母或没有任何数字时显示消息。

您也不需要正则表达式:

if(!str.Any(Char.IsLetter) || !str.Any(Char.IsDigit)) {  
  MessageBox.Show("Please Enter both numbers and letters");
  return;
}

注意:检查 Char.IsLetter的规范,以便字符集对于您想要执行的操作是可接受的。

于 2013-01-31T17:18:31.777 回答