|
|
Posted on 2006-05-07 21:10 風語者·疾風 阅读(914) 评论(2) 编辑 收藏 网摘 所属分类: DotNet开发
这是很早以前写的一个正则表达式验证工具类,包含了一些常见的校验和支持自定义的正则表达式匹配,可以选择完全匹配,也可以获取所有匹配项。曾用它仿造Eclispe下的正则表达式插件写过一个工具。因为最近突然有几个朋友都在问这方面的问题,干脆就把代码贴出来好了。
using System;
using System.Collections;
using System.Text.RegularExpressions;

namespace Xrinehart.Framework.Common.Validate
  {
 /**//// <summary>
/// RegularMatch 的摘要说明。
/// </summary>
public class RegularMatch
 {
private string _String;
private bool _IsEntirety;

 /**//// <summary>
/// 可以进行判断的类型
/// </summary>
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
};

 public RegularMatch() { }

 用于判断字符串是否是对应类型(默认为包含匹配)#region 用于判断字符串是否是对应类型(默认为包含匹配)
public bool IsAccordType(string strVerifyString, Operation op)
 {
return IsAccordType(strVerifyString, op, false);
}
#endregion

 用于判断字符串是否是对应类型(或是否包含对应类型的字符)#region 用于判断字符串是否是对应类型(或是否包含对应类型的字符)
 /**//// <summary>
/// 用于判断字符串是否是对应类型
/// </summary>
/// <param name="strVerifyString">String,需要判断的字符串</param>
/// <param name="op">Operation枚举,用于选择需要进行的操作</param>
/// <param name="IsEntirety">Boolean,判断是完全匹配还是包含匹配模式(仅适用于非类型判断时)</param>
/// <returns></returns>
public bool IsAccordType(string strVerifyString, Operation op, bool IsEntirety)
 {
_String = strVerifyString;
_IsEntirety = IsEntirety;

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;
}
}
}
#endregion

 具体验证方法#region 具体验证方法

 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数#region 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
 /**//// <summary>
/// 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
/// </summary>
/// <returns>Boolean</returns>
protected bool IsByte()
 {
try
 {
Byte.Parse(_String);
}
catch
 {
return false;
}
return true;
}
#endregion

 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数#region 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
 /**//// <summary>
/// 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
/// </summary>
/// <returns>Boolean</returns>
protected bool IsSByte()
 {
try
 {
SByte.Parse(_String);
}
catch
 {
return false;
}
return true;
}
#endregion

 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数#region 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
 /**//// <summary>
/// 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
/// </summary>
/// <returns>Boolean</returns>
protected bool IsInt16()
 {
try
 {
Int16.Parse(_String);
}
catch
 {
return false;
}
return true;
}
#endregion

 是否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 之间的有符号整数
/// </summary>
/// <returns>Boolean</returns>
protected bool IsInt32()
 {
try
 {
Int32.Parse(_String);
}
catch
 {
return false;
}
return true;
}
#endregion

 是否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 之间的整数
/// </summary>
/// <returns>Boolean</returns>
protected bool IsInt64()
 {
try
 {
Int64.Parse(_String);
}
catch
 {
return false;
}
return true;
}
#endregion

 |