📄 datacheck-.cs
字号:
using System;
using System.Data;
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
using Microsoft.Web.UI.WebControls;
using System.Globalization;
using System.Xml;
namespace DataAccess
{
/// <summary>
/// 指定数据的类别
/// </summary>
public enum DataSort
{
WhiteSpace=1, //空白符
Email, //email
Url, //Internet URL
Integer, //无符号整数
Float, //浮点数
Double, //双精度
Date, //日期
Time, //时间
DateTime, //日期时间
NotAllowSingleQuote //不允许包含单引号'
}
/// <summary>
/// IaData 的摘要说明。
/// </summary>
public class IaData
{
public IaData()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static string GetDateString(string _date,string _format)
{
string ret = "";
try
{
ret = Convert.ToDateTime( _date ).ToString( _format );
}
catch{}
return ret;
}
#region Replace 用指定的替换字符串替换所有匹配项
/// <summary>
/// 用指定的替换字符串替换所有匹配项
/// </summary>
/// <param name="input">要替换的string</param>
/// <param name="replacement">匹配项</param>
/// <param name="replacewith">将匹配项替换成的string</param>
/// <returns>替换后得到的string</returns>
public static string Replace(string input, string replacement, string replacewith)
{
Regex regex = new Regex(replacement);
string replacedString = regex.Replace(input, replacewith);
return replacedString;
}
#endregion
/// <summary>
/// 待校验的数据
/// </summary>
public class CheckedData
{
public string data; //待校验的数据
public string Description; //描述
public bool AllowWhiteSpace; //允许空
public int MaxLength; //最大长度
public DataSort Sort; //数据的类别
public CheckedData()
{
this.data = "";
this.Description = "";
this.AllowWhiteSpace = true;
this.MaxLength = 0;
this.Sort = 0;
}
/// <summary>
/// 用指定的数据以及约束条件初始化CheckedData的实例,没有定义要求的数据格式
/// </summary>
/// <param name="data">待检测的数据</param>
/// <param name="Description">待检测的数据的描述,在返回的子串中使用</param>
/// <param name="AllowWhiteSpace">是否允许为空字符串</param>
/// <param name="MaxLength">允许的最大长度</param>
public CheckedData(string data, string Description, bool AllowWhiteSpace, int MaxLength)
{
this.data = data;
this.Description = Description;
this.AllowWhiteSpace = AllowWhiteSpace;
this.MaxLength = MaxLength;
this.Sort = 0;
}
/// <summary>
/// 用指定的数据以及约束条件初始化CheckedData的实例
/// </summary>
/// <param name="data">待检测的数据</param>
/// <param name="Description">待检测的数据的描述,在返回的子串中使用</param>
/// <param name="AllowWhiteSpace">是否允许为空字符串</param>
/// <param name="MaxLength">允许的最大长度</param>
/// <param name="Sort">要求的数据格式,DataSort的枚举值,0表示任意格式</param>
public CheckedData(string data, string Description, bool AllowWhiteSpace, int MaxLength, DataSort Sort)
{
this.data = data;
this.Description = Description;
this.AllowWhiteSpace = AllowWhiteSpace;
this.MaxLength = MaxLength;
this.Sort = Sort;
}
//取得字符串的长度——字节数
public static int LenByte(string input)
{
return System.Text.Encoding.Default.GetByteCount(input);
}
public static bool IsValidDate(string input)
{
bool ret = false;
try
{
//DateTime.Parse( input );
DateTimeFormatInfo d = new DateTimeFormatInfo();
d.FullDateTimePattern = "yyyy-MM-dd";
Convert.ToDateTime( input, d );
ret = true;
}
catch{}
return ret;
}
public static bool IsValidFloat(string input)
{
bool ret = false;
try
{
float f = Convert.ToSingle( input );
ret = true;
}
catch{}
return ret;
}
public static bool IsValidDouble(string input)
{
bool ret = false;
try
{
double d = Convert.ToDouble( input );
ret = true;
}
catch{}
return ret;
}
#region 数据检测函数,检测输入字符串strInput 是否符合DataSort所指定的类别
/// <summary>
/// 数据检测函数,检测输入字符串strInput 是否符合DataSort所指定的类别
/// </summary>
/// <param name="strInput"></param>
/// <param name="checktype"></param>
/// <returns></returns>
public static bool DataCheck(string strInput , DataSort checktype)
{
bool ret = false;
string strPattern="";
switch(checktype)
{
case DataSort.WhiteSpace :
strPattern = "^\\s*$"; //White Space
break;
case DataSort.Email :
strPattern = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; //email
//"^(\\s*)|(\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+))*$"; //email
break;
case DataSort.Url :
strPattern = "^([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?$"; //Internet URL
break;
case DataSort.Integer :
strPattern = "^\\d*$"; //任意长度的数字,长度可以为0
break;
case DataSort.Float :
ret = CheckedData.IsValidFloat( strInput );
return ret;
//break;
case DataSort.Double :
ret = CheckedData.IsValidDouble( strInput );
return ret;
//break;
case DataSort.Date :
//strPattern = "^((19[2-9]\\d{1})|(20[01]\\d{1}))(-|/)((0?[13578])|(10)|(12))(-|/)((0?[0-9])|([12][0-9]?)|(3[01]?))|((19[2-9]\\d{1})|(20[01]\\d{1}))(-|/)(0?[2469]|11)(-|/)((0?[0-9])|([12])([0-9]?)|(3[0]?))$"; //日期YYYY-MM-DD: 1920-1-1 到 2019-12-31; Feb 30 也允许
strPattern = @"^\d{4}-\d{1,2}-\d{1,2}$";
ret = CheckedData.IsValidDate( strInput );
if( !ret )
return ret;
break;
case DataSort.Time :
//strPattern = "^(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])$"; //时间格式
strPattern = @"^\d{1,2}:\d{1,2}:\d{1,2}$";
ret = CheckedData.IsValidDate( strInput );
if( !ret )
return ret;
break;
case DataSort.DateTime :
//strPattern = "^(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])$"; //时间格式
strPattern = @"^\d{4}-\d{1,2}-\d{1,2}\s+\d{1,2}:\d{1,2}:\d{1,2}$";
ret = CheckedData.IsValidDate( strInput );
if( !ret )
return ret;
break;
case DataSort.NotAllowSingleQuote :
strPattern = "'";
break;
}
Regex regex = new Regex(strPattern);
Match match = regex.Match(strInput);
if(match.Success)
{
//匹配
ret = true;
}
else
{
ret = false;
}
if( checktype == DataSort.NotAllowSingleQuote )
{
//匹配表示包含单引号,所以返回false
ret = !ret;
}
return ret;
}
#endregion
#region Check 检测数据是否合法
/// <summary>
/// 检测数据是否合法
/// </summary>
/// <param name="cd">待校验的数据Array</param>
/// <returns>合法返回“”,否则返回不合法提示说明,可以直接输出</returns>
public static string Check(CheckedData[] cd)
{
string ret = "";
string txt = "";
string description = "";
for(int i=0; i<cd.Length; i++)
{
txt = cd[i].data;
description = cd[i].Description;
if(!cd[i].AllowWhiteSpace)
{
//不允许空
if( CheckedData.DataCheck(txt, DataSort.WhiteSpace) )
{
ret = description + "不允许为空,请输入!";
continue;
}
}
else
{
//允许为空
if( txt == "" )
{
//而且输入的值为空,则无需校验长度和格式
continue;
}
}
if( cd[i].MaxLength>0 && CheckedData.LenByte(txt)>cd[i].MaxLength )
{
//超过最大长度
ret = description + "超过了最大长度,请核实后重新输入!";
break;
}
if( cd[i].Sort != 0 && !CheckedData.DataCheck(txt, cd[i].Sort) )
{
//不符合格式
ret = description + "不符合要求的格式,请核实后重新输入!";
break;
}
}
return ret;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -