代码改变世界

asp.net 常用表单验证类

2009-06-22 13:41  Jeffery Tao  阅读(378)  评论(1)    收藏  举报

 

 

using System;

using System.Text.RegularExpressions;

namespace TestHyey

{

    public class PageValidate

    {

        //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-]+\\.(com|net|org|edu|mil|tv|biz|info)$");//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样

        //private static Regex RegChinese = new Regex("[\u4e00-\u9fa5]");//中文

        //private static Regex RegUrl = new Regex("^http://([w-]+.)+[w-]+(/[w-./ %&=]*)$");//带http://的网址

        //private static Regex RegTel = new Regex("^(\d{3}-\d{8})$|^(\d{4}-\d{7})$|^(\d{11})$");//国内电话号码 ,正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”, “XXXXXXXXXXX”。

        //private static Regex RegQQ = new Regex("^[1-9]*[1-9][0-9]*$");//匹配腾讯QQ号

        //private static Regex RegIDCard = new Regex(@"(^[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])$)|(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)");//匹配国内身份证号〕

        //private static Regex RegUserName = new Regex(@"^[a-zA-Z]\w{5,15}$");//匹配由字母开头,数字、26个英文字母或者下划线组成6-16位的字符串

        //private static Regex RegEnglish = new Regex("^[A-Za-z]+$");//由26个英文字母组成的字符串

        //private static Regex RegTrim = new Regex(@"(^\s*)|(\s*$)");//首尾空格的行

        //private static Regex RegTrimRow = new Regex(@"\n[\s| ]*\r");//空行

        //private static Regex RegMobile = new Regex(@"^((\(\d{2,3}\))|(\d{3}\-))?1[3|5]\d{9}$");//国内手机

        public PageValidate()

        {

        }

        //检查时候有危险字符

        public static bool CheckParam(string str)

        {

            Regex r = new Regex("^\\w+$");

            Match m = r.Match(str);

            if (m.Success)

            {

                return true;

            }

            else

            {

                return false;

            }

        }

        //

 

        #region//对入库字符进行编码和转换。

        /// <summary>

        /// 对入库字符进行编码和转换

        /// </summary>

        /// <param name="str"></param>

        /// <returns></returns>

        public static string EncodeStr(string str)

        {

            str = str.Replace("'", "’");

            str = str.Replace("\"", "&quot;");

            str = str.Replace("<", "&lt;");

            str = str.Replace(">", "&gt;");

            str = str.Replace("\n", "<br>");

            return str;

        }

        #endregion

        #region//对出库字符进入显示时的转换。

        /// <summary>

        /// 对出库字符进入显示时的转换

        /// </summary>

        /// <param name="str"></param>

        /// <returns></returns>

        public static string DecodeStr(string str)

        {

            str = str.Replace("’", "'");

            str = str.Replace("&quot;", "\"");

            str = str.Replace("&lt;", "<");

            str = str.Replace("&gt;", ">");

            str = str.Replace("<br>", "\n");

            return str;

        }

        #endregion

        #region 数字字符串检查

        /// <summary>

        /// 是否数字字符串

        /// </summary>

        /// <param name="inputData">输入字符串</param>

        /// <returns></returns>

        public static bool IsNumber(string inputData)

        {

            Regex RegNumber = new Regex("^[0-9]+$");//正整数

            Match m = RegNumber.Match(inputData);

            return m.Success;

        }

        /// <summary>

        /// 是否数字字符串 可带正负号

        /// </summary>

        /// <param name="inputData">输入字符串</param>

        /// <returns></returns>

        public static bool IsNumberSign(string inputData)

        {

            Regex RegNumberSign = new Regex("^[+-]?[0-9]+$");//正负整数

            Match m = RegNumberSign.Match(inputData);

            return m.Success;

        }

        /// <summary>

        /// 是否是浮点数

        /// </summary>

        /// <param name="inputData">输入字符串</param>

        /// <returns></returns>

        public static bool IsDecimal(string inputData)

        {

            Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");//小数

            Match m = RegDecimal.Match(inputData);

            return m.Success;

        }

        /// <summary>

        /// 是否是浮点数 可带正负号

        /// </summary>

        /// <param name="inputData">输入字符串</param>

        /// <returns></returns>

        public static bool IsDecimalSign(string inputData)

        {

            Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$"); //等价于^[+-]?\d+[.]?\d+$

            Match m = RegDecimalSign.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 中文检测

        /// <summary>

        /// 检测是否有中文字符

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsChinese(string inputData)

        {

            Regex RegChinese = new Regex("^[\u4e00-\u9fa5]+$");//中文

            Match m = RegChinese.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 邮件地址

        /// <summary>

        /// 是否是邮件地址

        /// </summary>

        /// <param name="inputData">输入字符串</param>

        /// <returns></returns>

        public static bool IsEmail(string inputData)

        {

            Regex RegEmail = new Regex("^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info|cn)$");//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样

            Match m = RegEmail.Match(inputData);

            return m.Success;

        }

        #endregion

        #region URL网址

        /// <summary>

        /// 是否是带http://的网址

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsUrl(string inputData)

        {

            Regex RegUrl = new Regex("^http://([w-]+.)+[w-]+(/[w-./ %&=]*)$");//带http://的网址

            Match m= RegUrl.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 固定电话

        /// <summary>

        /// 是否是国内电话号码

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsTel(string inputData)

        {

            Regex RegTel = new Regex(@"^(\d{3}-\d{8})$|^(\d{4}-\d{7})$|^(\d{11})$");//国内电话号码 ,正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”, “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。

            Match m = RegTel.Match(inputData);

            return m.Success;

        }

        #endregion

        #region QQ

        /// <summary>

        /// 是否是QQ

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsQQ(string inputData)

        {

            Regex RegQQ = new Regex("^[1-9]*[1-9][0-9]*$");//匹配腾讯QQ号

            Match m = RegQQ.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 身份证

        /// <summary>

        /// 是否是国内身份证号

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsIDCard(string inputData)

        {

            Regex RegIDCard = new Regex(@"(^[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])$)|(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)");//匹配国内身份证号〕

            Match m = RegIDCard.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 账号

        /// <summary>

        /// 账号是否合法,字母开头,数字、26个英文字母或者下划线组成6-16位的字符串

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsUserName(string inputData)

        {

            Regex RegUserName = new Regex(@"^[a-zA-Z]\w{5,15}$");//匹配由字母开头,数字、26个英文字母或者下划线组成6-16位的字符串

            Match m = RegUserName.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 英文字母

        /// <summary>

        /// 是否是由26个英文字母组成的字符串

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsEnglish(string inputData)

        {

            Regex RegEnglish = new Regex("^[A-Za-z]+$");//由26个英文字母组成的字符串

            Match m = RegEnglish.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 空行

        /// <summary>

        /// 是否有空行

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsTrimRow(string inputData)

        {

            Regex RegTrimRow = new Regex(@"\n[\s| ]*\r");//空行

            Match m = RegTrimRow.Match(inputData);

            return m.Success;

        }

        #endregion

        #region 手机

        /// <summary>

        /// 是否是国内手机

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsMobile(string inputData)

        {

            Regex RegMobile = new Regex(@"^((\(\d{2,3}\))|(\d{3}\-))?1[3|5]\d{9}$");//国内手机

            Match m = RegMobile.Match(inputData);

            return m.Success;

        }

        #endregion

        #region  日期

        /// <summary>

        /// 检查是否是日期

        /// </summary>

        /// <param name="inputData"></param>

        /// <returns></returns>

        public static bool IsDate(string inputData)

        {

            try

            {

                DateTime.Parse(inputData);

                return true;

            }

            catch

            {

                return false;

            }

        }

        #endregion

        #region  检查字符串最大长度,返回指定长度的串

        /// <summary>

        /// 检查字符串最大长度,返回指定长度的串

        /// </summary>

        /// <param name="sqlInput">输入字符串</param>

        /// <param name="maxLength">最大长度</param>

        /// <returns></returns>   

        public static string SqlText(string sqlInput, int maxLength)

        {

            if (sqlInput != null && sqlInput != string.Empty)

            {

                sqlInput = sqlInput.Trim();

                if (sqlInput.Length > maxLength)//按最大长度截取字符串

                    sqlInput = sqlInput.Substring(0, maxLength);

            }

            return sqlInput;

        }

        #endregion

        #region//获得<>中的内容

        public static string filterHtm(string htmlStr)

        {

            int flag;

            if (htmlStr.IndexOf(">") < htmlStr.IndexOf("<") || htmlStr.IndexOf("<") == 0)

                flag = 0;

            else

                flag = 1;

            string filterStr = "";

            foreach (char str in htmlStr)

            {

                if (str.ToString() == "<")

                    flag = 0;

                if (flag == 1)

                    filterStr += str.ToString();

                if (str.ToString() == ">")

                    flag = 1;

            }

            return filterStr;

        }

        #endregion

    }

}