public class Validate
{
private static Regex RegNumber = new Regex("^[0-9]+$");
private static Regex RegNumberSign = new Regex("^[+-]?[0-9]+$");
private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");
private static Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$"); //等价于^[+-]?\d+[.]?\d+$
private static Regex RegEmail = new Regex(@"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$");//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
private static Regex RegCHZN = new Regex("[\u4e00-\u9fa5]");

#region 用户名密码格式

/// <summary>
/// 返回字符串真实长度, 1个汉字长度为2
/// </summary>
/// <returns>字符长度</returns>
public static int GetStringLength(string stringValue)
{
return Encoding.Default.GetBytes(stringValue).Length;
}

/// <summary>
/// 检测用户名格式是否有效
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public static bool IsValidUserName(string userName)
{
int userNameLength = GetStringLength(userName);
if (userNameLength >= 4 && userNameLength <= 20 && Regex.IsMatch(userName, @"^([\u4e00-\u9fa5A-Za-z_0-9]{0,})$"))
{ // 判断用户名的长度(4-20个字符)及内容(只能是汉字、字母、下划线、数字)是否合法
return true;
}
else
{
return false;
}
}

/// <summary>
/// 密码有效性
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static bool IsValidPassword(string password)
{
return Regex.IsMatch(password, @"^[A-Za-z_0-9]{6,16}$");
}
#endregion

#region 数字字符串检查

/// <summary>
/// int有效性
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
static public bool IsValidInt(string val)
{
return Regex.IsMatch(val, @"^[1-9]\d*\.?[0]*$");
}

/// <summary>
/// 是否数字字符串
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool IsNumber(string inputData)
{
Match m = RegNumber.Match(inputData);
return m.Success;
}

/// <summary>
/// 是否数字字符串 可带正负号
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool IsNumberSign(string inputData)
{
Match m = RegNumberSign.Match(inputData);
return m.Success;
}

/// <summary>
/// 是否是浮点数
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool IsDecimalPrecise(string inputData)
{
Match m = RegDecimal.Match(inputData);
return m.Success;
}

/// <summary>
/// 是否是浮点数 可带正负号
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool IsDecimal(string inputData)
{
try {
Convert.ToDecimal(inputData);
return true;
}
catch
{
return false;
}
}

/// <summary>
/// 是否是浮点数 可带正负号
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool Isint(string inputData)
{
try
{
Convert.ToInt64(inputData);
return true;
}
catch
{
return false;
}
}

/// <summary>
/// 是否是浮点数 可带正负号
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool IsDecimalSign(string inputData)
{
Match m = RegDecimalSign.Match(inputData);
return m.Success;
}

#endregion

#region 中文检测

/// <summary>
/// 检测是否有中文字符
/// </summary>
/// <param name="inputData"></param>
/// <returns></returns>
public static bool IsHasCHZN(string inputData)
{
Match m = RegCHZN.Match(inputData);
return m.Success;
}

/// <summary>
/// 检测含有中文字符串的实际长度
/// </summary>
/// <param name="str">字符串</param>
public static int GetCHZNLength(string inputData)
{
System.Text.ASCIIEncoding n = new System.Text.ASCIIEncoding();
byte[] bytes = n.GetBytes(inputData);

int length = 0; // l 为字符串之实际长度
for (int i = 0; i <= bytes.Length - 1; i++)
{
if (bytes[i] == 63) //判断是否为汉字或全脚符号
{
length++;
}
length++;
}
return length;

}

#endregion

#region 常用格式

/// <summary>
/// 验证身份证是否合法 15 和 18位两种
/// </summary>
/// <param name="idCard">要验证的身份证</param>
public static bool IsIdCard(string idCard)
{
if (string.IsNullOrEmpty(idCard))
{
return false;
}

if (idCard.Length == 15)
{
return Regex.IsMatch(idCard, @"^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$");
}
else if (idCard.Length == 18)
{
return Regex.IsMatch(idCard, @"^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$", RegexOptions.IgnoreCase);
}
else
{
return false;
}
}

/// <summary>
/// 是否是邮件地址
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns></returns>
public static bool IsEmail(string inputData)
{
Match m = RegEmail.Match(inputData);
return m.Success;
}

/// <summary>
/// 邮编有效性
/// </summary>
/// <param name="zip"></param>
/// <returns></returns>
public static bool IsValidZip(string zip)
{
Regex rx = new Regex(@"^\d{6}$", RegexOptions.None);
Match m = rx.Match(zip);
return m.Success;
}

/// <summary>
/// 固定电话有效性
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
public static bool IsValidPhone(string phone)
{
Regex rx = new Regex(@"^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$", RegexOptions.None);
Match m = rx.Match(phone);
return m.Success;
}

/// <summary>
/// 手机有效性
/// </summary>
/// <param name="strMobile"></param>
/// <returns></returns>
public static bool IsValidMobile(string mobile)
{
Regex rx = new Regex(@"^(13|15|17|18|19)\d{9}$", RegexOptions.None);
Match m = rx.Match(mobile);
return m.Success;
}

/// <summary>
/// 电话有效性(固话和手机 )
/// </summary>
/// <param name="strVla"></param>
/// <returns></returns>
public static bool IsValidPhoneAndMobile(string number)
{
Regex rx = new Regex(@"^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$|^(13|15)\d{9}$", RegexOptions.None);
Match m = rx.Match(number);
return m.Success;
}

/// <summary>
/// Url有效性
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
static public bool IsValidURL(string url)
{
return Regex.IsMatch(url, @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$");
}

/// <summary>
/// IP有效性
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public static bool IsValidIP(string ip)
{
return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
}

/// <summary>
/// domain 有效性
/// </summary>
/// <param name="host">域名</param>
/// <returns></returns>
public static bool IsValidDomain(string host)
{
Regex r = new Regex(@"^\d+$");
if (host.IndexOf(".") == -1)
{
return false;
}
return r.IsMatch(host.Replace(".", string.Empty)) ? false : true;
}

/// <summary>
/// 判断是否为base64字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsBase64String(string str)
{
return Regex.IsMatch(str, @"[A-Za-z0-9\+\/\=]");
}

/// <summary>
/// 验证字符串是否是GUID
/// </summary>
/// <param name="guid">字符串</param>
/// <returns></returns>
public static bool IsGuid(string guid)
{
if (string.IsNullOrEmpty(guid))
return false;

return Regex.IsMatch(guid, "[A-F0-9]{8}(-[A-F0-9]{4}){3}-[A-F0-9]{12}|[A-F0-9]{32}", RegexOptions.IgnoreCase);
}

#endregion

#region 日期检查

/// <summary>
/// 判断输入的字符是否为日期
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public static bool IsDate(string strValue)
{
return Regex.IsMatch(strValue, @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))");
}

/// <summary>
/// 判断输入的字符是否为日期,如2004-07-12 14:25|||1900-01-01 00:00|||9999-12-31 23:59
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public static bool IsDateHourMinute(string strValue)
{
return Regex.IsMatch(strValue, @"^(19[0-9]{2}|[2-9][0-9]{3})-((0(1|3|5|7|8)|10|12)-(0[1-9]|1[0-9]|2[0-9]|3[0-1])|(0(4|6|9)|11)-(0[1-9]|1[0-9]|2[0-9]|30)|(02)-(0[1-9]|1[0-9]|2[0-9]))\x20(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){1}$");
}

public static bool isDataTime(string datetime)
{
try
{
Convert.ToDateTime(datetime);
return true;
}
catch {
return false;
}
return false;
}

#endregion

#region 其他

/// <summary>
/// 检查字符串最大长度,返回指定长度的串
/// </summary>
/// <param name="sqlInput">输入字符串</param>
/// <param name="maxLength">最大长度</param>
/// <returns></returns>
public static string CheckMathLength(string inputData, int maxLength)
{
if (inputData != null && inputData != string.Empty)
{
inputData = inputData.Trim();
if (inputData.Length > maxLength)//按最大长度截取字符串
{
inputData = inputData.Substring(0, maxLength);
}
}
return inputData;
}

/// <summary>
/// 转换成 HTML code
/// </summary>
/// <param name="str">string</param>
/// <returns>string</returns>
public static string Encode(string str)
{
str = str.Replace("&", "&amp;");
str = str.Replace("'", "''");
str = str.Replace("\"", "&quot;");
str = str.Replace(" ", "&nbsp;");
str = str.Replace("<", "&lt;");
str = str.Replace(">", "&gt;");
str = str.Replace("\n", "<br>");
return str;
}
/// <summary>
///解析html成 普通文本
/// </summary>
/// <param name="str">string</param>
/// <returns>string</returns>
public static string Decode(string str)
{
str = str.Replace("<br>", "\n");
str = str.Replace("&gt;", ">");
str = str.Replace("&lt;", "<");
str = str.Replace("&nbsp;", " ");
str = str.Replace("&quot;", "\"");
return str;
}

/// <summary>
/// 转换日期
/// </summary>
/// <returns></returns>
public static DateTime? ConvertDate(string date)
{
try
{
return Convert.ToDateTime(date);
}
catch
{
return null;
}
}

#endregion

#region 单位换算
/// <summary>
/// 毫米mm、厘米cm、分米dm、米m,长度单位之间的转换
/// 1米(m)= 10分米(dm)
/// 1分米(dm)=10厘米(cm)
/// 1厘米(cm)=10毫米(mm)
/// </summary>
/// <param name="Number">需转换的数值</param>
/// <param name="beforeUnit">转换前单位[mm、cm、dm、m]</param>
/// <param name="afterUnit">转换后单位[mm、cm、dm、m]</param>
/// <returns></returns>
public static decimal LengthUnitConversion(string Number, string beforeUnit, string afterUnit)
{
switch (afterUnit.ToLower())
{
case "mm": //转毫米
#region 转毫米
switch (beforeUnit.ToLower())
{
case "cm":
return Convert.ToDecimal(Number) * 10; //1厘米=10毫米
case "dm":
return Convert.ToDecimal(Number) * 100; //1分米=100毫米
case "m":
return Convert.ToDecimal(Number) * 1000; //1米=100毫米
default:
return Convert.ToDecimal(Number);
}
#endregion
case "cm"://转厘米
#region 转厘米
switch (beforeUnit.ToLower())
{
case "mm":
return Convert.ToDecimal(Number) / 10; //1毫米=0.1厘米
case "dm":
return Convert.ToDecimal(Number) * 10; //1分米=10厘米
case "m":
return Convert.ToDecimal(Number) * 100; //1米=100厘米
default:
return Convert.ToDecimal(Number);
}
#endregion
case "dm"://转分米
#region 转分米
switch (beforeUnit.ToLower())
{
case "mm":
return Convert.ToDecimal(Number) / 100; //1毫米=0.01分米
case "cm":
return Convert.ToDecimal(Number) / 10;//1厘米=0.1分米
case "m":
return Convert.ToDecimal(Number) * 10; //1米=10分米
default:
return Convert.ToDecimal(Number);
}
#endregion
case "m"://转米
#region 转米
switch (beforeUnit.ToLower())
{
case "mm":
return Convert.ToDecimal(Number) / 1000; //1毫米=0.001米
case "cm":
return Convert.ToDecimal(Number) / 100;//1厘米=0.01米
case "dm":
return Convert.ToDecimal(Number) / 10; //1分米=0.1米
default:
return Convert.ToDecimal(Number);
}
#endregion
default:
return Convert.ToDecimal(Number);
}
}

/// <summary>
/// 立方毫米mm³、立方厘米cm³、立方分米dm³、立方米m³,体积单位之间的转换
/// 1立方米(m³)= 1000升(L)= 1000立方分米(dm³)
/// 1立方分米(dm³)=1000立方厘米(cm³)
/// 1立方厘米(cm³)=1000立方毫米(mm³)
/// </summary>
/// <param name="Number">需转换的数值</param>
/// <param name="beforeUnit">转换前单位[mm、cm、dm、m]</param>
/// <param name="afterUnit">转换后单位[mm、cm、dm、m]</param>
/// <returns></returns>
public static decimal VolumeUnitConversion(string Number, string beforeUnit, string afterUnit)
{
switch (afterUnit.ToLower())
{
case "mm": //转立方毫米
#region 转立方毫米
switch (beforeUnit.ToLower())
{
case "cm":
return Convert.ToDecimal(Number) * 1000; //1立方厘米=1000立方毫米
case "dm":
return Convert.ToDecimal(Number) * 1000000; //1立方分米=1000000立方毫米
case "m":
return Convert.ToDecimal(Number) * 1000000000; //1立方米=1000000000毫米
default:
return Convert.ToDecimal(Number);
}
#endregion
case "cm"://转立方厘米
#region 转立方厘米
switch (beforeUnit.ToLower())
{
case "mm":
return Convert.ToDecimal(Number) / 1000; //1立方毫米=0.001立方厘米
case "dm":
return Convert.ToDecimal(Number) * 1000; //1立方分米=1000立方厘米
case "m":
return Convert.ToDecimal(Number) * 1000000; //1立方米=1000000立方厘米
default:
return Convert.ToDecimal(Number);
}
#endregion
case "dm"://转立方分米
#region 转立方分米
switch (beforeUnit.ToLower())
{
case "mm":
return Convert.ToDecimal(Number) / 1000000; //1立方毫米=0.000001立方分米
case "cm":
return Convert.ToDecimal(Number) / 1000;//1立方厘米=0.001立方分米
case "m":
return Convert.ToDecimal(Number) * 1000; //1立方米=1000立方分米
default:
return Convert.ToDecimal(Number);
}
#endregion
case "m"://转立方米
#region 转立方米
switch (beforeUnit.ToLower())
{
case "mm":
return Convert.ToDecimal(Number) / 1000000000; //1立方毫米=0.000000001米
case "cm":
return Convert.ToDecimal(Number) / 1000000;//1立方厘米=0.0000001立方米
case "dm":
return Convert.ToDecimal(Number) / 1000; //1立方分米=0.001立方米
default:
return Convert.ToDecimal(Number);
}
#endregion
default:
return Convert.ToDecimal(Number);
}
}

/// <summary>
/// 吨t、千克kg、克g、 重量单位之间的转换
/// 1吨(t)= 1000千克(kg)
/// 1千克(kg)=1000克(g)
/// </summary>
/// <param name="Number">需转换的数值</param>
/// <param name="beforeUnit">转换前单位[t、kg、g]</param>
/// <param name="afterUnit">转换后单位[t、kg、g]</param>
/// <returns></returns>
public static decimal WeightUnitConversion(string Number, string beforeUnit, string afterUnit)
{
switch (afterUnit.ToLower())
{
case "g": //转克
#region 转克
switch (beforeUnit.ToLower())
{
case "kg":
return Convert.ToDecimal(Number) * 1000; //1千克=1000克
case "t":
return Convert.ToDecimal(Number) * 1000000; //1吨=1000000克
default:
return Convert.ToDecimal(Number);
}
#endregion
case "kg"://转千克
#region 转千克
switch (beforeUnit.ToLower())
{
case "g":
return Convert.ToDecimal(Number) / 1000; //1克=0.001千克
case "t":
return Convert.ToDecimal(Number) * 1000; //1吨=1000千克
default:
return Convert.ToDecimal(Number);
}
#endregion
case "t"://转吨
#region 转吨
switch (beforeUnit.ToLower())
{
case "g":
return Convert.ToDecimal(Number) / 1000000; //1克=0.000001千克
case "kg":
return Convert.ToDecimal(Number) / 1000;//1千克=0.001吨
default:
return Convert.ToDecimal(Number);
}
#endregion
default:
return Convert.ToDecimal(Number);
}
}
#endregion

#region 时间格式转与Unix时间戳值转换

/// <summary>
/// 将c# DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time">时间</param>
/// <returns>long</returns>

public static long ConvertDataTimeLong(DateTime time)
{
//double intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
//intResult = (time- startTime).TotalMilliseconds;
long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
return t;
}

/// <summary>
/// 将Unix时间戳转换为DateTime类型时间
/// </summary>
/// <param name="d">long 型数字</param>
/// <returns>DateTime</returns>

public static DateTime ConvertLongDateTime(long d)
{
System.DateTime time = System.DateTime.MinValue;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
time = startTime.AddMilliseconds(d);
return time;

}

#endregion
}

Validate日期校验的更多相关文章

  1. Web报表工具JS开发之日期校验

    在报表开发过程中,我们常常需要对查询界面进行日期校验.例如有两个参数:开始日期和结束日期,我们要校验的是:开始日期与结束日期不能为空,结束日期必须在开始日期之后以及结束日期必须在开始日期后的某个时间段 ...

  2. jquery.validate.js校验select2解决方案,Jquery插件select2校验解决方案

    jquery.validate.js校验select2解决方案 Jquery插件select2校验解决方案 >>>>>>>>>>>&g ...

  3. Struts2中validate数据校验的两种常用方法

    本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.  1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...

  4. js日期校验

    当查询条件含有日期时,如"2012-3-4",查询前校验输入的日期字符串是否为有效的日期 var snapshot_createTime_begin=$(selector+&quo ...

  5. Validate常用校验

    1.首先将jQuery.js和jquery.validate.js加入对应的页面中,如果要中文的提示语还要把messages_zh.js加入,以及对应的css文件. <link href=&qu ...

  6. validate 不校验的解决办法

    最近使用validate.js用于项目的表单校验,调了半天,怎么都不校验,仔细对照例子发现 例子中要校验的文本框除了ID外还有name属性,而我在做的时候没有name属性,到这里终于 看到了希望,把所 ...

  7. jquery validate 如何校验多个相同name

    在表单页中有如下代码 <form> <input name="zhai"/><!-- 三个相同name的input --> <input ...

  8. 通过jquery.validate.js校验表单字段是否合法

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  9. jquery validate 自定义校验方法

    1.引入JS jquery.min.js jquery.validate.min.js messages_zh.min.js 2.添加验证方法,第一个参数为验证方法的名称,第二个参数为验证方法. $. ...

随机推荐

  1. Java实现 蓝桥杯 算法提高 01背包

    算法提高 01背包 时间限制:1.0s 内存限制:256.0MB 问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入 ...

  2. Java实现 蓝桥杯VIP 算法训练 寂寞的数

    问题描述 道德经曰:一生二,二生三,三生万物. 对于任意正整数n,我们定义d(n)的值为为n加上组成n的各个数字的和.例如,d(23)=23+2+3=28, d(1481)=1481+1+4+8+1= ...

  3. Java实现 蓝桥杯 历届试题 蚂蚁感冒

    问题描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂 ...

  4. java实现第七届蓝桥杯七星填数

    七星填数 如图[图1.png]所示. 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏. 要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字. 请计算其它位置要填充的数字,答案唯 ...

  5. 数据结构:用实例分析ArrayList与LinkedList的读写性能

    目录 背景 ArrayList LinkedList 实例分析 1.增加数据 2.插入数据 3.遍历数据 3.1.LinkedList遍历改进 总结 背景 ArrayList与LinkedList是J ...

  6. 钻进 Linux 内核看个究竟

    Linux 内核,这个经常听见,却不不知道它具体是干嘛的东西,是不是觉得非常神秘? Linux 内核看不见摸不着,而对于这类东西,我们经常无从下手.本文就以浅显易懂的语言,带你钻进 Linux 内核, ...

  7. 「MoreThanJava」Java发展史及起航新世界

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  8. 日期时间设置 QDate, QTime, QDateTime

    #!/usr/bin/python3 from PyQt5.QtCore import QDate, QTime, QDateTime, Qt now = QDate.currentDate() pr ...

  9. 手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc

    前言     一直以来对内部服务间使用RPC的方式调用都比较赞同,因为内部间没有这么多限制,最简单明了的方式就是最合适的方式.个人比较喜欢类似Dubbo的那种使用方式,把接口层单独出来,作为服务的契约 ...

  10. Photoshop 使用过程中遇到的问题

    1.关于图片像素 根据不同用途设置不同的分辨率: 印洗照片300像素及以上, 高清写真海报96-200像素, 网络图片网页界面72像素, 大型喷绘25到50像素