RegexHelper.cs
View Code
/** 1. 功能:操作正则表达式的公共类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; #endregion namespace Comm { /// <summary> /// 操作正则表达式的公共类 /// </summary> public class RegexHelper { #region 验证输入的字符串是否合法 /// <summary> /// 验证输入的字符串是否合法,合法返回true,否则返回false。 /// </summary> /// <param name="strInput">输入的字符串</param> /// <param name="strPattern">模式字符串</param> public static bool Validate( string strInput , string strPattern ) { return Regex.IsMatch( strInput , strPattern ); } #endregion } }
ValidationHelper.cs
View Code
/** 1. 功能:用于验证的公共类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; #endregion namespace Comm { /// <summary> /// 用于验证的公共类 /// </summary> public class ValidationHelper { #region 判断对象是否为空 /// <summary> /// 判断对象是否为空,为空返回true /// </summary> /// <typeparam name="T">要验证的对象的类型</typeparam> /// <param name="data">要验证的对象</param> public static bool IsNullOrEmpty<T>( T data ) { //如果为null if ( data == null ) { return true; } //如果为"" if ( data.GetType() == typeof( String ) ) { if ( string.IsNullOrEmpty( data.ToString().Trim() ) ) { return true; } } //如果为DBNull if ( data.GetType() == typeof( DBNull ) ) { return true; } //不为空 return false; } /// <summary> /// 判断对象是否为空,为空返回true /// </summary> /// <param name="data">要验证的对象</param> public static bool IsNullOrEmpty( object data ) { //如果为null if ( data == null ) { return true; } //如果为"" if ( data.GetType() == typeof( String ) ) { if ( string.IsNullOrEmpty( data.ToString().Trim() ) ) { return true; } } //如果为DBNull if ( data.GetType() == typeof( DBNull ) ) { return true; } //不为空 return false; } #endregion #region 验证IP地址是否合法 /// <summary> /// 验证IP地址是否合法 /// </summary> /// <param name="ip">要验证的IP地址</param> public static bool IsIP( string ip ) { //如果为空,认为验证合格 if ( IsNullOrEmpty( ip ) ) { return true; } //清除要验证字符串中的空格 ip = ip.Trim(); //模式字符串 string pattern = @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"; //验证 return RegexHelper.Validate( ip, pattern ); } #endregion #region 验证EMail是否合法 /// <summary> /// 验证EMail是否合法 /// </summary> /// <param name="email">要验证的Email</param> public static bool IsEmail( string email ) { //如果为空,认为验证合格 if ( IsNullOrEmpty( email ) ) { return true; } //清除要验证字符串中的空格 email = email.Trim(); //模式字符串 string pattern = @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"; //验证 return RegexHelper.Validate( email, pattern ); } #endregion #region 验证是否为整数 /// <summary> /// 验证是否为整数 /// </summary> /// <param name="number">要验证的整数</param> public static bool IsInt( string number ) { //如果为空,认为验证合格 if ( IsNullOrEmpty( number ) ) { return true; } //清除要验证字符串中的空格 number = number.Trim(); //模式字符串 string pattern = @"^[1-9]+[0-9]*$"; //验证 return RegexHelper.Validate( number, pattern ); } #endregion #region 验证是否为数字 /// <summary> /// 验证是否为数字 /// </summary> /// <param name="number">要验证的数字</param> public static bool IsNumber( string number ) { //如果为空,认为验证合格 if ( IsNullOrEmpty( number ) ) { return true; } //清除要验证字符串中的空格 number = number.Trim(); //模式字符串 string pattern = @"^[1-9]+[0-9]*[.]?[0-9]*$"; //验证 return RegexHelper.Validate( number, pattern ); } #endregion #region 验证日期是否合法 /// <summary> /// 验证日期是否合法,对不规则的作了简单处理 /// </summary> /// <param name="date">日期</param> public static bool IsDate( ref string date ) { //如果为空,认为验证合格 if ( IsNullOrEmpty( date ) ) { return true; } //清除要验证字符串中的空格 date = date.Trim(); //替换\ date = date.Replace( @"\","-" ); //替换/ date = date.Replace( @"/", "-" ); //如果查找到汉字"今",则认为是当前日期 if ( date.IndexOf( "今" ) != -1 ) { date = DateTime.Now.ToString(); } try { //用转换测试是否为规则的日期字符 date = Convert.ToDateTime( date ).ToString( "d" ); return true; } catch { //如果日期字符串中存在非数字,则返回false if ( !IsInt( date ) ) { return false; } #region 对纯数字进行解析 //对8位纯数字进行解析 if ( date.Length == 8 ) { //获取年月日 string year = date.Substring( 0, 4 ); string month = date.Substring( 4, 2 ); string day = date.Substring( 6, 2 ); //验证合法性 if ( Convert.ToInt32( year ) < 1900 || Convert.ToInt32( year ) > 2100 ) { return false; } if ( Convert.ToInt32( month ) > 12 || Convert.ToInt32( day ) > 31 ) { return false; } //拼接日期 date = Convert.ToDateTime( year + "-" + month + "-" + day ).ToString( "d" ); return true; } //对6位纯数字进行解析 if ( date.Length == 6 ) { //获取年月 string year = date.Substring( 0, 4 ); string month = date.Substring( 4, 2 ); //验证合法性 if ( Convert.ToInt32( year ) < 1900 || Convert.ToInt32( year ) > 2100 ) { return false; } if ( Convert.ToInt32( month ) > 12 ) { return false; } //拼接日期 date = Convert.ToDateTime( year + "-" + month ).ToString( "d" ); return true; } //对5位纯数字进行解析 if ( date.Length == 5 ) { //获取年月 string year = date.Substring( 0, 4 ); string month = date.Substring( 4, 1 ); //验证合法性 if ( Convert.ToInt32( year ) < 1900 || Convert.ToInt32( year ) > 2100 ) { return false; } //拼接日期 date = year + "-" + month; return true; } //对4位纯数字进行解析 if ( date.Length == 4 ) { //获取年 string year = date.Substring( 0, 4 ); //验证合法性 if ( Convert.ToInt32( year ) < 1900 || Convert.ToInt32( year ) > 2100 ) { return false; } //拼接日期 date = Convert.ToDateTime( year ).ToString( "d" ); return true; } #endregion return false; } } #endregion #region 验证身份证是否合法 /// <summary> /// 验证身份证是否合法 /// </summary> /// <param name="idCard">要验证的身份证</param> public static bool IsIdCard( string idCard ) { //如果为空,认为验证合格 if ( IsNullOrEmpty( idCard ) ) { return true; } //清除要验证字符串中的空格 idCard = idCard.Trim(); //模式字符串 StringBuilder pattern = new StringBuilder(); pattern.Append( @"^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|" ); pattern.Append( @"50|51|52|53|54|61|62|63|64|65|71|81|82|91)" ); pattern.Append( @"(\d{13}|\d{15}[\dx])$" ); //验证 return RegexHelper.Validate( idCard, pattern.ToString() ); } #endregion #region 检测客户的输入中是否有危险字符串 /// <summary> /// 检测客户输入的字符串是否有效,并将原始字符串修改为有效字符串或空字符串。 /// 当检测到客户的输入中有攻击性危险字符串,则返回false,有效返回true。 /// </summary> /// <param name="input">要检测的字符串</param> public static bool IsValidInput( ref string input ) { try { if ( IsNullOrEmpty( input ) ) { //如果是空值,则跳出 return true; } else { //替换单引号 input = input.Replace( "'", "''" ).Trim(); //检测攻击性危险字符串 string testString = "and |or |exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare "; string[] testArray = testString.Split( '|' ); foreach ( string testStr in testArray ) { if ( input.ToLower().IndexOf( testStr ) != -1 ) { //检测到攻击字符串,清空传入的值 input = ""; return false; } } //未检测到攻击字符串 return true; } } catch ( Exception ex ) { LogHelper.WriteTraceLog( TraceLogLevel.Error, ex.Message ); return false; } } #endregion } }