必须包含数字和字母的文本框?

时间:2013-01-31 17:12:33

标签: c# textbox alphanumeric

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

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

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

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

想想简单:

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

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

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

答案 2 :(得分:1)

如果字符串没有任何字母或者没有任何数字,您要做的就是显示消息。

您不需要正则表达式:

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

注意:选择Char.IsLetter的规范,以便可以接受您想要的字符集。