C#常用操作类库一(验证类)

简介:   public class Validator    {        #region  验证输入字符串为数字        ///         /// 验证输入字符串为数字        ///         /// 输入字符        /// 返回一个bool类型的值      ...
   public  class Validator
    {
         #region  验证输入字符串为数字
         ///   <summary>
        
///  验证输入字符串为数字
        
///   </summary>
        
///   <param name="strln"> 输入字符 </param>
        
///   <returns> 返回一个bool类型的值 </returns>
         public  static  bool IsNumber( string strln)
        {
             return Regex.IsMatch(strln,  " ^([0]|([1-9]+\\d{0,}?))(.[\\d]+)?$ ");
        }
         #endregion

       
         ///   <summary>
        
///  判断用户输入是否为日期
        
///   </summary>
        
///   <param name="strln"></param>
        
///   <returns></returns>
        
///   <remarks>
        
///  可判断格式如下(其中-可替换为/,不影响验证)
        
///  YYYY | YYYY-MM | YYYY-MM-DD | YYYY-MM-DD HH:MM:SS | YYYY-MM-DD HH:MM:SS.FFF
        
///   </remarks>
         public  static  bool IsDateTime( string strln)
        {
             if ( null == strln)
            {
                 return  false;
            }
             string regexDate =  @" [1-2]{1}[0-9]{3}((-|\/|\.){1}(([0]?[1-9]{1})|(1[0-2]{1}))((-|\/|\.){1}((([0]?[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1})))( (([0-1]{1}[0-9]{1})|2[0-3]{1}):([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})(\.[0-9]{3})?)?)?)?$ ";
             if (Regex.IsMatch(strln, regexDate))
            {
                 // 以下各月份日期验证,保证验证的完整性
                 int _IndexY = - 1;
                 int _IndexM = - 1;
                 int _IndexD = - 1;
                 if (- 1 != (_IndexY = strln.IndexOf( " - ")))
                {
                    _IndexM = strln.IndexOf( " - ", _IndexY +  1);
                    _IndexD = strln.IndexOf( " : ");
                }
                 else
                {
                    _IndexY = strln.IndexOf( " / ");
                    _IndexM = strln.IndexOf( " / ", _IndexY +  1);
                    _IndexD = strln.IndexOf( " : ");
                }
                 // 不包含日期部分,直接返回true
                 if (- 1 == _IndexM)
                     return  true;
                 if (- 1 == _IndexD)
                {
                    _IndexD = strln.Length +  3;
                }
                 int iYear = Convert.ToInt32(strln.Substring( 0, _IndexY));
                 int iMonth = Convert.ToInt32(strln.Substring(_IndexY +  1, _IndexM - _IndexY -  1));
                 int iDate = Convert.ToInt32(strln.Substring(_IndexM +  1, _IndexD - _IndexM -  4));
                 // 判断月份日期
                 if ((iMonth <  8 &&  1 == iMonth %  2) || (iMonth >  8 &&  0 == iMonth %  2))
                {
                     if (iDate <  32)
                         return  true;
                }
                 else
                {
                     if (iMonth !=  2)
                    {
                         if (iDate <  31)
                             return  true;
                    }
                     else
                    {
                         // 闰年
                         if (( 0 == iYear %  400) || ( 0 == iYear %  4 &&  0 < iYear %  100))
                        {
                             if (iDate <  30)
                                 return  true;
                        }
                         else
                        {
                             if (iDate <  29)
                                 return  true;
                        }
                    }
                }
            }
             return  false;
        }
        

         #region 验证手机号
         ///   <summary>
        
///  验证输入字符串为18位的手机号码
        
///   </summary>
        
///   <param name="source"></param>
        
///   <returns></returns>
         public  static  bool IsMobile( string strln)
        {
             return Regex.IsMatch(strln,  @" ^1[0123456789]\d{9}$ ", RegexOptions.IgnoreCase);
        }
       
         #endregion

     
         ///   <summary>
        
///  验证身份证是否有效
        
///   </summary>
        
///   <param name="strln"></param>
        
///   <returns></returns>
         public  static  bool IsIDCard( string strln)
        {
             if (strln.Length ==  18)
            {
                 bool check = IsIDCard18(strln);
                 return check;
            }
             else  if (strln.Length ==  15)
            {
                 bool check = IsIDCard15(strln);
                 return check;
            }
             else
            {
                 return  false;
            }
        }

         ///   <summary>
        
///  验证输入字符串为18位的身份证号码
        
///   </summary>
        
///   <param name="strln"> 输入的字符 </param>
        
///   <returns></returns>
         public  static  bool IsIDCard18( string strln)
        {
             long n =  0;
             if ( long.TryParse(strln.Remove( 17),  out n) ==  false || n < Math.Pow( 1016) ||  long.TryParse(strln.Replace( ' x '' 0 ').Replace( ' X '' 0 '),  out n) ==  false)
            {
                 return  false; // 数字验证
            }
             string address =  " 11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91 ";
             if (address.IndexOf(strln.Remove( 2)) == - 1)
            {
                 return  false; // 省份验证
            }
             string birth = strln.Substring( 68).Insert( 6" - ").Insert( 4" - ");
            DateTime time =  new DateTime();
             if (DateTime.TryParse(birth,  out time) ==  false)
            {
                 return  false; // 生日验证
            }
             string[] arrVarifyCode = ( " 1,0,x,9,8,7,6,5,4,3,2 ").Split( ' , ');
             string[] Wi = ( " 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 ").Split( ' , ');
             char[] Ai = strln.Remove( 17).ToCharArray();
             int sum =  0;
             for ( int i =  0; i <  17; i++)
            {
                sum +=  int.Parse(Wi[i]) *  int.Parse(Ai[i].ToString());
            }
             int y = - 1;
            Math.DivRem(sum,  11out y);
             if (arrVarifyCode[y] != strln.Substring( 171).ToLower())
            {
                 return  false; // 校验码验证
            }
             return  true; // 符合GB11643-1999标准
        }
         ///   <summary>
        
///  验证输入字符串为15位的身份证号码
        
///   </summary>
        
///   <param name="strln"> 输入的字符 </param>
        
///   <returns></returns>
         public  static  bool IsIDCard15( string strln)
        {
             long n =  0;
             if ( long.TryParse(strln,  out n) ==  false || n < Math.Pow( 1014))
            {
                 return  false; // 数字验证
            }
             string address =  " 11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91 ";
             if (address.IndexOf(strln.Remove( 2)) == - 1)
            {
                 return  false; // 省份验证
            }
             string birth = strln.Substring( 66).Insert( 4" - ").Insert( 2" - ");
            DateTime time =  new DateTime();
             if (DateTime.TryParse(birth,  out time) ==  false)
            {
                 return  false; // 生日验证
            }
             return  true; // 符合15位身份证标准
        }
       
         
         ///   <summary>
        
///  验证输入字符串为电话号码
        
///   </summary>
        
///   <param name="P_str_phone"> 输入字符串 </param>
        
///   <returns> 返回一个bool类型的值 </returns>
         public  static  bool IsPhone( string strln)
        {
             return Regex.IsMatch(strln,  @" (^(\d{2,4}[-_-—]?)?\d{3,8}([-_-—]?\d{3,8})?([-_-—]?\d{1,7})?$)|(^0?1[35]\d{9}$) ");
             // 弱一点的验证:  @"\d{3,4}-\d{7,8}"         
        }
        

         ///   <summary>
        
///  验证是否是有效邮箱地址
        
///   </summary>
        
///   <param name="strln"> 输入的字符 </param>
        
///   <returns></returns>
         public  static  bool IsEmail( string strln)
        {
             return Regex.IsMatch(strln,  @" ^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$ ");
        }
         ///   <summary>
        
///  验证是否是有效传真号码
        
///   </summary>
        
///   <param name="strln"> 输入的字符 </param>
        
///   <returns></returns>
         public  static  bool IsFax( string strln)
        {
             return Regex.IsMatch(strln,  @" ^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$ ");
        }
         ///   <summary>
        
///  验证是否只含有汉字
        
///   </summary>
        
///   <param name="strln"> 输入的字符 </param>
        
///   <returns></returns>
         public  static  bool IsOnllyChinese( string strln)
        {
             return Regex.IsMatch(strln,  @" ^[\u4e00-\u9fa5]+$ ");
        }


    }

 

目录
相关文章
|
1月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
2月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
81 2
|
1月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
13 0
|
1月前
|
C#
Delphi可不可以制作出像c#那样的dll类库?
在Delphi中,创建DLL项目(如dll.dpr)并定义一个类TMyCls后,在另一个项目(如test.dpr)中可以引入此DLL并直接实例化和调用类的方法。然而,Delphi目前主要支持两种DLL形式:动态链接库(需显式声明exports,仅支持函数调用)和ActiveX DLL(需定义IDL接口)。这两种方式都较为繁琐。相比之下,C# 的DLL类库更为便捷,编写并编译后即可在其他项目中直接使用。
|
2月前
|
C# 数据安全/隐私保护
C# 一分钟浅谈:类与对象的概念理解
【9月更文挑战第2天】本文从零开始详细介绍了C#中的类与对象概念。类作为一种自定义数据类型,定义了对象的属性和方法;对象则是类的实例,拥有独立的状态。通过具体代码示例,如定义 `Person` 类及其实例化过程,帮助读者更好地理解和应用这两个核心概念。此外,还总结了常见的问题及解决方法,为编写高质量的面向对象程序奠定基础。
27 2
|
3月前
|
C#
C#中的类和继承
C#中的类和继承
44 6
|
3月前
|
Java C# 索引
C# 面向对象编程(一)——类
C# 面向对象编程(一)——类
35 0
|
3月前
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结
|
5月前
|
开发框架 .NET 编译器
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
37 2
|
5月前
|
存储 安全 C#
C# 类的深入指南
C# 类的深入指南