WinForm:一个登陆窗体引发的问题系列(二):用户名文本框的输入限制
在探讨文本框的输入限制时,我们主要集中两个问题:
一、怎样限制用户名输入的长度?
答:设置txtName的属性 MaxLength="10"; (我们这里以10个字符为例)
二、怎样限制用户名只输入字母 数字以及下划线
答:有两种方法可以实现
方法1:
private void txtName_KeyPress(object sender, KeyPressEventArgs e)
{
this.txtName.ImeMode = ImeMode.Off;
if ((e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z') || (e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar == 8) || (e.KeyChar == '_'))
{
e.Handled = false;
}
else
{
MessageBox.Show("用户名只能为字母、数字和下划线!");
e.Handled = true;
}
}
方法二:
private void txtName_KeyPress(object sender, KeyPressEventArgs e)
{
this.txtName.ImeMode = ImeMode.Off;
Regex reg = new Regex(@"^\w+$");
if (this.txtName.Text != "")//要加上一个是否为空的判断
{
if (reg.IsMatch(this.txtName.Text))
{
e.Handled = false;
}
else
{
MessageBox.Show("用户名只能为字母、数字和下划线!");
e.Handled = true;
}
}
}
对于这两种方法各有优劣,大家在实际应用中也会发现,第一种方法可以在输入前就限定用户输入不符合的字符,第二种方法是用户输入后再做的判断。文章后面附上一些常用的正则表达式,以方便大家使用:
只能输入数字:"^[0-9]*$"。
只能输入n位的数字:"^\d{n}$"。
只能输入至少n位的数字:"^\d{n,}$"。
只能输入m~n位的数字:。"^\d{m,n}$"
只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
只能输入非零的负整数:"^\-[1-9][]0-9"*$。
只能输入长度为3的字符:"^.{3}$"。
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
作者:Jason_z(开发者的网上家园 - 博客园)
出处:http://www.cnblogs.com/Jason_z/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。