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. MVVM 小雏形 knockout

    前言 knockout学过的当工具脚本用,就像jquery一样使用,学习成本15分钟,没学过的可学可不学. knockout 是上古神器,话说在远古开天辟地,前端到处是飞禽走兽,一片混乱. 这时候人类 ...

  2. SpringBoot整合Flyway(数据库版本迁移工具)

    简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的). ...

  3. Java实现 LeetCode 808 分汤 (暴力模拟)

    808. 分汤 有 A 和 B 两种类型的汤.一开始每种类型的汤有 N 毫升.有四种分配操作: 提供 100ml 的汤A 和 0ml 的汤B. 提供 75ml 的汤A 和 25ml 的汤B. 提供 5 ...

  4. Java实现 蓝桥杯VIP 算法提高 林丹大战李宗伟

    问题描述 我们用0表示林丹,1表示李宗伟. 输入数据中每行会给出一个0或者1,表示对应选手得1分. 当一方得分达到21分时,只要该方与对方分差超过1分,该方即胜出. 你需要输出最后获胜选手的代号. 输 ...

  5. Java实现 蓝桥杯VIP 算法提高 产生数

    算法提高 产生数 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则 ...

  6. java实现第五届蓝桥杯信号匹配

    信号匹配 从X星球接收了一个数字信号序列. 现有一个已知的样板序列.需要在信号序列中查找它首次出现的位置.这类似于串的匹配操作. 如果信号序列较长,样板序列中重复数字较多,就应当注意比较的策略了.可以 ...

  7. java实现第七届蓝桥杯阶乘位数

    阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:1011000100110000000 这个数字共有19位. 请你计算,9999 的阶乘的二进制表示一共有多少位? 注意:需要提交的是 ...

  8. Windows学习Nodejs、Npm和VUE

    前言 本文主要以开发的角度讲解Node.js,Npm和Vue. Node.js学习 什么是Node.js Node.js简单来说就是一个IISExpress,提供一个前端Html的独立运行环境. 安装 ...

  9. 09.Django-信号

    目录 Django中的信号及其用法 Django中内置的signal 内置信号的使用 自定义信号 Django中的信号及其用法 Django中提供了"信号调度",用于在框架执行操作 ...

  10. PE文件介绍 (1)

    PE文件介绍 PE文件主要是windows操作系统下使用的可执行文件格式,PE文件是指32位的可执行文件也叫做PE32,64位可执行文件叫做PE+或者PE32+ PE文件格式 种类 主扩展名 可执行类 ...