数据安全验证之正则表达式

本文涉及的产品
数据安全中心,免费版
简介:

 这几天正在制作用户登陆这一块,用户登陆其中我觉得最烦人的就是输入数据的验证;虽然微软给了我们几个强的控件,但是自己写正则表达式那是相当的耗时间啊;在网上有很多人在网上发部了很多有用的正则表达式,可能以后会再次用到这些表达式,这里把它记录下来;通过验证控件并不是100%保险的,因为用户控件只是在客户端验证,有些无聊的人根本不通来那些来提交数据,所以我们还是要在服务端再次验证,这样正则表达式就成为了我们的重要工具啦.

   通过这几天的努力我收集同时也自己写了几个正则表达式,Look:

    1 .验证用户名和密码:(" ^ [ a-zA-Z ] \w{ 5 , 15 }$")正确格式:" [ A-Z ][ a-z ] _ [ 0-9 ] "组成,并且第一个字必须为字母6 ~ 16位;
   
2 .验证电话号码:(" ^ (\d{ 3.4 } - )\d{ 7 , 8 }$")正确格式:xxx / xxxx - xxxxxxx / xxxxxxxx;
   
3 .验证身份证号(15位或18位数字):(" ^ \d{ 15 } | \d{ 18 }$");
   
4 .验证Email地址:(" ^ \w + ( [ -+. ] \w + ) * @\w + ( [ -. ] \w + ) * \.\w + ( [ -. ] \w + ) * $");
   5 .只能输入由数字和26个英文字母组成的字符串:(" ^ [ A-Za-z0-9 ] + $")  ;
   
6 .整数或者小数: ^ [ 0-9 ] + \.{ 0 , 1 } [ 0-9 ] { 0 , 2 }$
   
7 .只能输入数字:" ^ [ 0-9 ] * $"。
   
8 .只能输入n位的数字:" ^ \d{n}$"。
   
9 .只能输入至少n位的数字:" ^ \d{n,}$"。
   
10 .只能输入m ~ n位的数字:。" ^ \d{m,n}$"
   
11 .只能输入零和非零开头的数字:" ^ ( 0 | [ 1-9 ][ 0-9 ] * )$"。
   
12 .只能输入有两位小数的正实数:" ^ [ 0-9 ] + (. [ 0-9 ] { 2 })?$"。
   
13 .只能输入有1 ~ 3位小数的正实数:" ^ [ 0-9 ] + (. [ 0-9 ] { 1 , 3 })?$"。
   
14 .只能输入非零的正整数:" ^ \ + ? [ 1-9 ][ 0-9 ] * $"。
   
15 .只能输入非零的负整数:" ^ \ - [ 1-9 ][] 0 - 9 " * $。
   
16 .只能输入长度为3的字符:" ^ .{ 3 }$"。
   
17 .只能输入由26个英文字母组成的字符串:" ^ [ A-Za-z ] + $"。
   
18 .只能输入由26个大写英文字母组成的字符串:" ^ [ A-Z ] + $"。
   
19 .只能输入由26个小写英文字母组成的字符串:" ^ [ a-z ] + $"。
   
20 .验证是否含有 ^%& ' ,;=?$\"等字符:"[^%& ' ,; = ?$\x22] + "。
   
21 .只能输入汉字:" ^ [ \u4e00-\u9fa5 ] { 0 ,}$"
   
22 .验证URL:" ^ http: // ( [ \w- ] + \.) + [ \w- ] + ( / [ \w-./?%&= ] * )?$"。
   
23 .验证一年的12个月:" ^ ( 0 ? [ 1-9 ] | 1 [ 0-2 ] )$"正确格式为:" 01 "~" 09 "和" 1 "~" 12 "。
   
24 .验证一个月的31天:" ^ (( 0 ? [ 1-9 ] ) | (( 1 | 2 ) [ 0-9 ] ) | 30 | 31 )$"正确格式为;" 01 "~" 09 "和" 1 "~" 31 "。
 
      从上面我们可以看到:"^"表示后面紧跟着的字符为开头;与之相对应的式"$"以紧跟前面的字符为结尾.但是要注意的式当"^"位于"[]"里时,表示"非"的意思,例如:[^AZ]表示不能为"AZ"中的任一个字符."[]"表示当中的一个字符."{}"可以取得一个范围,例如"{9}"表示9个,而"{1,9}"表示1到9个字符.
  
       下面我们看看正则表达式在Asp.Net数据验证中的应用,第一个当然式在服务器验证控件中的应用了,很简单看下面的代码:

< asp:RegularExpressionValidator  ID ="RegularExpressionValidator1"  ControlToValidate ="UserName"  ValidationExpression ="^[a-zA-Z]\w{3,15}$"  runat ="server"  ErrorMessage ="用户名格式不正确"  ToolTip ="用户名格式不正确!" > * </ asp:RegularExpressionValidator >

    这样就能满足我们在客户端的验证,<asp:RegularExpression>控键很简单,ID和runat就不用多说了,ControlToValidate指的是要验证控件的ID,这里是UserName文本(TextBox)控件,ValidationExpression一看就知道要添上我们的正则表达式了.如果没有输入"*",但为通过验证时会显示ErrorMessage里的内容,当然要预先为显示这些东西留点空间的哦,不然效果会不好的哦.不过我们可以把所有错误的放在ValidationSummary控件中.

      上面只能用于君子中,有些无聊的人不同过你的这些控件直接给你的服务器发信息,这样就可能有麻烦了,不用着急,我们可以在服务端添加一点东西:

 1 None.gif using  System;
 2 None.gif using  System.Web;
 3 None.gif // 一定记住引用此空间.
 4 None.gif using  System.Text.RegularExpressions;
 5 None.gif
 6 ExpandedBlockStart.gif namespace  NexPlus.Validation {
 7InBlock.gif   public partial class Simple : System.Web.UI.UserControl
 8ExpandedSubBlockStart.gif    {
 9ExpandedSubBlockStart.gif      public Simple(){}
10InBlock.gif      protected void Submit_Click(object sender, ImageClickEventArgs e)
11ExpandedSubBlockStart.gif        {
12InBlock.gif            if (Page.IsValid)
13ExpandedSubBlockStart.gif            {
14ExpandedSubBlockStart.gif              if(!Regex.IsMatch(UserName.Text,@"^[a-zA-Z]\w{5,17}$",RegexOptions.IgnorePatternWhitespace)){
15InBlock.gif                    UserName.Focus();
16InBlock.gif                    return;
17ExpandedSubBlockEnd.gif                }

18InBlock.gif                //dot.gif..
19ExpandedSubBlockEnd.gif             }

20ExpandedSubBlockEnd.gif           }

21ExpandedSubBlockEnd.gif    }

22ExpandedBlockEnd.gif}
     

     是不是很Easy!我们有深入的研究过这个东东,如果有什么地方不正确请批评指正,谢谢!


本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2006/09/21/Regex_Validate_Data.html,如需转载请自行联系原作者

相关文章
|
5月前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名2
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
1492 0
|
1月前
|
JavaScript 前端开发 Java
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
|
5月前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名1
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
383 0
|
数据安全/隐私保护
正则表达式--密码复杂度验证--必须包含大写、小写、数字、特殊字符中的至少三项
正则表达式--密码复杂度验证--必须包含大写、小写、数字、特殊字符中的至少三项
815 0
|
5月前
|
JavaScript 前端开发 网络协议
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名3
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
354 0
【正则表达式】正则表达式同时支持验证手机号码和座机号码
【正则表达式】正则表达式同时支持验证手机号码和座机号码
|
5月前
|
JavaScript 数据安全/隐私保护
jquery正则表达式验证手机号密码和姓名字段
jquery正则表达式验证手机号密码和姓名字段
|
5月前
|
数据采集 Java API
Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】
Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】
|
11月前
|
JavaScript
正则表达式同时验证手机和座机号码
正则表达式同时验证手机和座机号码
192 0
|
存储 数据安全/隐私保护
验证用户名和密码的正则表达式
验证用户名和密码的正则表达式