2013-01-31 61 views
1

我想知道有没有办法确保用户输入数字和字母到文本框,如果不提示消息?我有如下:必须包含数字和字母的文本框?

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

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

回答

1

你想要做的是显示消息,如果字符串没有任何字母或它不具有任何数字。

你并不需要一个正则表达式,要么:

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

注:再检查一下规格为Char.IsLetter,这样的字符集是你想做的事可以接受的。

+0

完美!非常感谢!! – dcolton147

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

想简单:

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

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

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

相关问题