我想知道有没有办法确保用户同时输入数字和字母到文本框中,如果没有提示信息?我有如下:
if(!Regex.IsMatch(string, @"^[a-zA-Z]+$") && !Regex.IsMatch(string, @"^[1-9]+$"))
{
MessageBox.Show("Please Enter both numbers and letters");
return;
}
所以我在这里想说的是,如果字符串没有字母,如果字符串没有数字,则提示错误。但是,如果你输入所有字母(或数字),没有错误提示,所以我想知道是否有办法做到这一点。我在问题中进行了研究,除了如何允许某些角色之外没有找到任何东西。
答案 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的规范,以便可以接受您想要的字符集。