benben 发表于 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 之间的时间
[*]  &
页: [1]
查看完整版本: 一个常用的正则表达验证类