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("&", "&");
            str = str.Replace("‘", "‘‘");
            str = str.Replace("\"", """);
            str = str.Replace(" ", " ");
            str = str.Replace("<", "<");
            str = str.Replace(">", ">");
            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(">", ">");
            str = str.Replace("<", "<");
            str = str.Replace(" ", " ");
            str = str.Replace(""", "\"");
            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>
        /// 立方毫米mm3、立方厘米cm3、立方分米dm3、立方米m3,体积单位之间的转换
        /// 1立方米(m3)= 1000升(L)= 1000立方分米(dm3)
        /// 1立方分米(dm3)=1000立方厘米(cm3)
        /// 1立方厘米(cm3)=1000立方毫米(mm3)
        /// </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
    }
原文:http://www.cnblogs.com/badboys/p/7582069.html