C# WinForm登陸窗體 限制使用者名稱只輸入字母 數字以及下劃線
文字框的輸入限制,我們主要集中兩個問題:
一、怎樣限制使用者名稱輸入的長度?
答:設定txtName的屬性 MaxLength="10"; (我們這裡以10個字元為例)
二、怎樣限制使用者名稱只輸入字母 數字以及下劃線
答:有兩種方法可以實現
方法1:
//通過監聽鍵盤keychar實現privatevoid txtName_KeyPress(object sender, KeyPressEventArgs e){
this.txtName.ImeMode = ImeMode.Off;
if ((e.KeyChar >=
(e.KeyChar >='a'&& e.KeyChar <='z') || (e.KeyChar ==8) || (e.KeyChar =='_'))
{
e.Handled =false;
}
else
{
MessageBox.Show(
e.Handled =true;
}
}
方法二:
//使用正則表達事匹配privatevoid 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,}$"