六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 233|回复: 0

一个常用的正则表达验证类

[复制链接]

升级  38.7%

580

主题

580

主题

580

主题

探花

Rank: 6Rank: 6

积分
1774
 楼主| 发表于 2013-1-27 04:34:48 | 显示全部楼层 |阅读模式
这是風語·深蓝

很早以前写的一个正则表达式验证工具类,包含了一些常见的校验和支持自定义的正则表达式匹配,可以选择完全匹配,也可以获取所有匹配项。曾用它仿造Eclispe下的正则表达式插件写过一个工具。因为最近突然有几个朋友都在问这方面的问题,干脆就把代码贴出来好了。
<div class="highlighter">

  • using System;
  • <span />using System.Collections;
  • <span />using System.Text.RegularExpressions;
  • <span />
  • <span />namespace Xrinehart.Framework.Common.Validate
  • {
  •     /**//// <summary>
  •     /// RegularMatch 的摘要说明。 <span />
  •     /// </summary>     <span />
  •     public class RegularMatch
  •     {
  •         private string _String;
  •         private bool _IsEntirety;
  • <span />
  •         /**//// <summary>
  •         /// 可以进行判断的类型 <span />
  •         /// </summary> <span />
  •         public enum Operation
  •         {
  •             Byte, SByte, Int16, Int32, Int64, Single, Double, Boolean, Char, Decimal, DateTime, Date, Time,
  •             EMail, URL, ChinaPhone, ChineseWord, ChinesePostalCode, Number, StringModel_01, StringModel_02, WideWord, NarrowWord, IPAddress,
  •             ChineseMobile, ChineseID
  •         };
  • <span />
  •         public RegularMatch() { }
  • <span />
  •         用于判断字符串是否是对应类型(默认为包含匹配)#region 用于判断字符串是否是对应类型(默认为包含匹配)
  •         public bool IsAccordType(string strVerifyString, Operation op)
  •         {
  •             return IsAccordType(strVerifyString, op, false);
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         用于判断字符串是否是对应类型(或是否包含对应类型的字符)#region 用于判断字符串是否是对应类型(或是否包含对应类型的字符)
  •         /**//// <summary>
  •         /// 用于判断字符串是否是对应类型 <span />
  •         /// </summary> <span />
  •         /// <param name="strVerifyString">String,需要判断的字符串</param> <span />
  •         /// <param name="op">Operation枚举,用于选择需要进行的操作</param> <span />
  •         /// <param name="IsEntirety">Boolean,判断是完全匹配还是包含匹配模式(仅适用于非类型判断时)</param> <span />
  •         /// <returns></returns> <span />
  •         public bool IsAccordType(string strVerifyString, Operation op, bool IsEntirety)
  •         {
  •             _String = strVerifyString;
  •             _IsEntirety = IsEntirety;
  • <span />
  •             switch (op)
  •             {
  •                 case Operation.Byte:
  •                     {
  •                         return IsByte();
  •                     }
  •                 case Operation.SByte:
  •                     {
  •                         return IsSByte();
  •                     }
  •                 case Operation.Int16:
  •                     {
  •                         return IsInt16();
  •                     }
  •                 case Operation.Int32:
  •                     {
  •                         return IsInt32();
  •                     }
  •                 case Operation.Int64:
  •                     {
  •                         return IsInt64();
  •                     }
  •                 case Operation.Single:
  •                     {
  •                         return IsSingle();
  •                     }
  •                 case Operation.Double:
  •                     {
  •                         return IsDouble();
  •                     }
  •                 case Operation.Boolean:
  •                     {
  •                         return IsBoolean();
  •                     }
  •                 case Operation.Char:
  •                     {
  •                         return IsChar();
  •                     }
  •                 case Operation.Decimal:
  •                     {
  •                         return IsDecimal();
  •                     }
  •                 case Operation.DateTime:
  •                     {
  •                         return IsDateTime();
  •                     }
  •                 case Operation.Date:
  •                     {
  •                         return IsDate();
  •                     }
  •                 case Operation.Time:
  •                     {
  •                         return IsTime();
  •                     }
  •                 case Operation.IPAddress:
  •                     {
  •                         return IsIPAddress();
  •                     }
  •                 case Operation.ChinaPhone:
  •                     {
  •                         return IsChinaPhone();
  •                     }
  •                 case Operation.ChinesePostalCode:
  •                     {
  •                         return IsChinesePostalCode();
  •                     }
  •                 case Operation.ChineseMobile:
  •                     {
  •                         return IsChineseMobile();
  •                     }
  •                 case Operation.EMail:
  •                     {
  •                         return IsEmail();
  •                     }
  •                 case Operation.URL:
  •                     {
  •                         return IsURL();
  •                     }
  •                 case Operation.ChineseWord:
  •                     {
  •                         return IsChineseWord();
  •                     }
  •                 case Operation.Number:
  •                     {
  •                         return IsNumber();
  •                     }
  •                 case Operation.StringModel_01:
  •                     {
  •                         return IsStringModel_01();
  •                     }
  •                 case Operation.StringModel_02:
  •                     {
  •                         return IsStringModel_02();
  •                     }
  •                 case Operation.WideWord:
  •                     {
  •                         return IsWideWord();
  •                     }
  •                 case Operation.NarrowWord:
  •                     {
  •                         return IsNarrowWord();
  •                     }
  •                 case Operation.ChineseID:
  •                     {
  •                         return IsChineseID();
  •                     }
  •                 default:
  •                     {
  •                         return false;
  •                     }
  •             }
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         具体验证方法#region 具体验证方法
  • <span />
  •         是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数#region 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
  •         /**//// <summary>
  •         /// 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsByte()
  •         {
  •             try<span />
  •             {
  •                 Byte.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数#region 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
  •         /**//// <summary>
  •         /// 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsSByte()
  •         {
  •             try<span />
  •             {
  •                 SByte.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数#region 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
  •         /**//// <summary>
  •         /// 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsInt16()
  •         {
  •             try<span />
  •             {
  •                 Int16.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数#region 是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数
  •         /**//// <summary>
  •         /// 是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsInt32()
  •         {
  •             try<span />
  •             {
  •                 Int32.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数#region 是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数
  •         /**//// <summary>
  •         /// 是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsInt64()
  •         {
  •             try<span />
  •             {
  •                 Int64.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字#region 是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字
  •         /**//// <summary>
  •         /// 是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsSingle()
  •         {
  •             try<span />
  •             {
  •                 Single.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字#region 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  •         /**//// <summary>
  •         /// 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsDouble()
  •         {
  •             try<span />
  •             {
  •                 Double.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Boolean类型(布尔值):true 或 false#region 是否Boolean类型(布尔值):true 或 false<span />
  •         /**//// <summary>
  •         /// 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsBoolean()
  •         {
  •             try<span />
  •             {
  •                 Boolean.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF#region 是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF
  •         /**//// <summary>
  •         /// 是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsChar()
  •         {
  •             try<span />
  •             {
  •                 Char.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数#region 是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数
  •         /**//// <summary>
  •         /// 是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsDecimal()
  •         {
  •             try<span />
  •             {
  •                 Decimal.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间#region 是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间
  •         /**//// <summary>
  •         /// 是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsDateTime()
  •         {
  •             try<span />
  •             {
  •                 DateTime.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             return true;
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期#region 是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期
  •         /**//// <summary>
  •         /// 是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期 <span />
  •         /// </summary> <span />
  •         /// <returns>Boolean</returns> <span />
  •         protected bool IsDate()
  •         {
  •             DateTime Value;
  •             try<span />
  •             {
  •                 Value = DateTime.Parse(_String);
  •             }
  •             catch<span />
  •             {
  •                 return false;
  •             }
  •             if (Value.Date.ToString() == _String)
  •             {
  •                 return true;
  •             }
  •             else<span />
  •             {
  •                 return false;
  •             }
  •         } <span class="preprocessor" />
  •         #endregion <span />
  • <span />
  •         是否Time类型(表示时间部分HHMMSS): 范围在夜 12:00:00 到晚上 11:59:59 之间的时间#region 是否Time类型(表示时间部分HHMMSS): 范围在夜 12:00:00 到晚上 11:59:59 之间的时间
  •   &
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表