WinForm下正则表达式的应用
1.引入命名空间:usingSystem.Text.RegularExpressions;
2.首先定义一个枚举
//枚举
privateenumCheckType:int
{
isHomePage=0,//主页
isEmail=1,//E-mail
isUserName=3,//用户名
isPwd=4,//密码
}
3.根据输入的字符串,进行校验
///
///校验输入字符串是否符合规则
///
///被校验的字符串
///字符串校验类别
///bool
privateboolCheckString(stringstrCheck,CheckTypeeType)
{
stringstrRule="";//校验规则
switch(eType)
{
caseCheckType.isHomePage:
strRule=@"^http:\/\/([\w-]+(\.[\w-]+)+(\/[\w-.\/\?%&=\u4e00-\u9fa5]*)?)?$";
break;
caseCheckType.isEmail:
strRule=@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$";
break;
caseCheckType.isUserName:
strRule=@"^\w+$";//只能由26个英文字母、数字及下划线组成
break;
caseCheckType.isPwd:
strRule=@"^\w+$";//只能由26个英文字母、数字及下划线组成
break;
default:
break;
}
//开始校验
RegexoReg=newRegex(strRule);
MatchCollectionoCollection=oReg.Matches(strCheck);
if(oCollection.Count>0)
{
returntrue;
}
else
{
returnfalse;
}
}
4.定义上图中TextBox的TextChanged事件
//用户名验证
privatevoidtbName_TextChanged(objectsender,EventArgse)
{
if(!this.CheckString(this.tbName.Text.Trim(),CheckType.isUserName))
{
lbErrorName.Text="只能由26个英文字母、数字及下划线组成";
}
else
{
lbErrorName.Text="用户名格式正确";
}
}
//密码验证
privatevoidtbPwd_TextChanged(objectsender,EventArgse)
{
if(!this.CheckString(this.tbPwd.Text.Trim(),CheckType.isPwd))
{
lbErrorPwd.Text="只能由26个英文字母、数字及下划线组成";
}
else
{
lbErrorPwd.Text="密码格式正确";
}
}