杨洋疯狂C# 刊号:201208 第1期----ASPNET验证(二)
时间:2012年08月09日 14点 地点:上海 天气:”海葵“台风还没走,但是也没下雨
先推荐一个正则验证的WEB版工具:http://www.xaprb.com/demos/rx-toolkit/
关于应用程序版的有很多,你可以
然后会有很多正则表达式工具截图,照着搜一下软件的名称,就可以找到一些工具了,但建议你必须要达到自己能看的懂表达式的基本水平才行,以为正则表达式是活的,以后
一些 新的正则表达式规则还要靠你去原创呢。自己做了一个表,仅供参考
一定要把这两张表记熟了,看懂,言归正传,开始吧
(茗)一次性判断方式
①邮编:
表达式: ^\d{6}$
②身份证号码:
条 件:15位或者18位数字,17位数字+X或者x
表达式:^(^\d{15}$|^\d{17}(\d|X|x))$
说 明: | 表示 或者;你可以是 \d{15}这个整体,也可以是\d{18},或者17个\d加上一个X或者x
你可以用RegexBuddy作为测试工具和正则参考工具,在这里不对这个工具做赘述了,我自己用的是这个
(你先在上面一个框写好正确的正则表达式,然后勾选它上面的下拉框为.NET,然后选中Test 选项卡,在下面写字符串,写好后,当你的字符串背景呈现黄色,说明该字符串就符合了上面表达式的要求了,否则无色)
③判断你输入的是否是汉字
表达式: ^[\u4e00-\u9fa5]+$
④验证输入是字符串长度大于6的字符串
表达式:^.{6,}$
说 明: 点号代表 匹配除换行符以外的任意字符
⑤学会正则中的转义符-反斜杠 \.代表.号,\$代表$号,特殊字符当普通的字符用,用反斜杠,相当于C#中“@”
验证一个两位小数
表达式:^[0-9]+\.\d{2}$
⑥非零的正整数
条 件:+2或者2都可以,02,2.2都是失败
表达式:^\+?[1-9]\d*$
说 明:提高⑤的理解\+,主要单个字符组合思想[1-9]然后\d可有0个以上配在一起,*就是{0,},然后前面的正号可有可无{0,1}也就是?号都可以
拓展题目:含有2位小数的非零的负数
⑦验证大写字母或者小写字母
表达式:[A-Z]或者[a-z]
拓展题目:会员卡号:SX666888,SX0246810Z的身份验证,前面2位大写字母代表卡类型,后面是6位数字,6位数字后面有个可有可无的大写字母当做
标识码
⑧Email的验证(RegexBuddy正则库的使用)
表达式: ^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$
这个表达式有很多版本email正则验证表达式
相关图片:
推荐的正则表达式查看参考库
拓展题目:URL的验证,IP地址的验证
(洋)多次性判断方式
①打开上次的电话号码验证解决方案,你也可以新建一个测试项目,我在上次的那个项目上继续写了
②我的运行界面目前是这样的,很丑啊,只是demo啊,不要介意,主要是验证密码那个,上面一行控件可以不要
③后台或者前台设置文本框的TextMode属性
txtPassword.TextMode = TextBoxMode.Password;
这里我啰嗦一句了,这行代码我没写过,但我潜意识下会知道该怎么写
我的思路:
i. 现在前台属性找找,找到了TextMode,修改右侧的文本框属性立刻达成目标
ii. 在后台适合的事件里写这行代码,我选在Page_Load中
iii. 写到”txtPassword.TextMode = “尴尬了,我潜意识下,就在后面写了txtPassword.TextMode =TextMode然后没变色,我又按快捷键Shift+Alt+F10也没
弹出要导入的命名空间,点号也没必要输入了,肯定点不出来。
iiii. 将鼠标移到txtPassword后面的TextMode上面,发现TextMode是TextBoxMode类型的,顺藤摸瓜
写出来了“ txtPassword.TextMode = TextBoxMode.Password;”,没猜错TextBoxMode肯定是枚举型的,写过自定义控件你就了解了
④在后台写的密码验证代码
protected void btnValidatePassword_Click(object sender, EventArgs e) { if (IsLegalPassword(txtPassword.Text)) { ltPasswordResult.Text = "密码正确"; } else { ltPasswordResult.Text = "密码不合法!"; } } public bool IsLegalPassword(string pwd) { //密码长度要大于6 string reg1 = @"^\w{6,}$"; //是否含有大写字母 string reg2 = @"^\w*[A-Z]+\w*$"; //是否含有小写字母 string reg3 = @"^\w*[a-z]+\w*$"; //是否含有数字 string reg4 = @"^\w*\d+\w*$"; //是否含有下划线 string reg5 = @"^\w*[_]+\w*$"; if (Regex.IsMatch(pwd, reg1) && Regex.IsMatch(pwd, reg2) && Regex.IsMatch(pwd, reg3) && Regex.IsMatch(pwd, reg4) && Regex.IsMatch(pwd, reg5)) { return true; } return false; }
(芳) Regex.Split(string str,stringpattern)
protected void btnSplit_Click(object sender, EventArgs e) { if (txtSplit.Text.Length != 0) { string[] arr = Regex.Split(txtSplit.Text,@"\d"); txtSplit.Text = string.Empty; foreach (string item in arr) { txtSplit.Text += item; } // txtPhoneValidate.Text = string.Join("@", arr); } }
根据数字分段截取,返回个string类型数组
protected void btnReplace_Click(object sender, EventArgs e) { if (txtReplace.Text.Length != 0) { string arr = Regex.Replace(txtReplace.Text, @"\d","$"); txtReplace.Text = arr; } }