天天看點

驗證工具類以及基本驗證方法

把下面的代碼放在一個類中,叫"utility.cs"

using system;

using system.collections.generic;

using system.linq;

using system.web;

using system.text.regularexpressions;

using system.text;

using system.web.ui.webcontrols;

namespace tool

{

    public class utility

    {

        private static regex regphone = new regex("^[0-9]+[-]?[0-9]+[-]?[0-9]$");

        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 regchzn = new regex("[\u4e00-\u9fa5]");

        /// <summary>

        /// 驗證文本資料是不是為空

        /// </summary>

        /// <param name="o">對象</param>

        /// <returns>布爾型</returns>

        public static bool checkformtextnotempty(object o)

        {

            if (o == null || o.tostring().trim().length == 0)

            {

                return false;

            }

            else

                return true;

        }

        /// 判斷對象是否為int32類型的數字

        /// <param name="expression"></param>

        /// <returns></returns>

        public static bool isnumeric(object expression)

            if (expression != null)

                string str = expression.tostring();

                if (str.length > 0 && str.length <= 11 && regex.ismatch(str, @"^[-]?[0-9]*[.]?[0-9]*$"))

                {

                    if ((str.length < 10) || (str.length == 10 && str[0] == '1') || (str.length == 11 && str[0] == '-' && str[1] == '1'))

                    {

                        return true;

                    }

                }

            return false;

        /// 從session裡面擷取userinfo

        public static model.userinfo getuserfromsession()

            object o = system.web.httpcontext.current.session["safesystemuserinfo"];

            if (o != null)

                return (o as model.userinfo);

                return null;

        /// 從session裡面移除userinfo

        public static void removeuserfromsession()

           system.web.httpcontext.current.session["safesystemuserinfo"]=""; 

        /// 儲存員工資訊到session

        /// <param name="staff"></param>

        public static void savauserinsession(model.userinfo user)

            system.web.httpcontext.current.session["safesystemuserinfo"] = user;

  #region 數字字元串檢查  

        public static bool isphone(string inputdata)

            match m = regphone.match(inputdata);

            return m.success;

  /// <summary>

  /// 檢查request查詢字元串的鍵值,是否是數字,最大長度限制

  /// </summary>

  /// <param name="req">request</param>

  /// <param name="inputkey">request的鍵值</param>

  /// <param name="maxlen">最大長度</param>

  /// <returns>傳回request查詢字元串</returns>

  public static string fetchinputdigit(httprequest req, string inputkey, int maxlen)

  {

   string retval = string.empty;

   if(inputkey != null && inputkey != string.empty)

   {

    retval = req.querystring[inputkey];

    if(null == retval)

     retval = req.form[inputkey];

    if(null != retval)

    {

     retval = sqltext(retval, maxlen);

     if(!isnumber(retval))

      retval = string.empty;

    }

   }

   if(retval == null)

    retval = string.empty;

   return retval;

  }  

  /// 是否數字字元串

  /// <param name="inputdata">輸入字元串</param>

  /// <returns></returns>

  public static bool isnumber(string inputdata)

   match m = regnumber.match(inputdata);

   return m.success;

  }

  /// 是否數字字元串 可帶正負号

  public static bool isnumbersign(string inputdata)

   match m = regnumbersign.match(inputdata);

  /// 是否是浮點數

  public static bool isdecimal(string inputdata)

   match m = regdecimal.match(inputdata);

  /// 是否是浮點數 可帶正負号

  public static bool isdecimalsign(string inputdata)

   match m = regdecimalsign.match(inputdata);

        ///  驗證輸入大小是否超過了資料庫允許的大小

        /// <param name="input">輸入的内容</param>

        /// <param name="maxlength">最大長度</param>

        public static bool isgreaterthanstandardlength(string input, int maxlength)

            if (input.length >= maxlength)

  #endregion

  #region 中文檢測

  /// 檢測是否有中文字元

  /// <param name="inputdata"></param>

  public static bool ishaschzn(string inputdata)

   match m = regchzn.match(inputdata);

  } 

  #region 郵件位址

  public static bool isemail(string inputdata)

   match m = regemail.match(inputdata);

        #region 日期格式判斷

        /// 日期格式字元串判斷

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

        public static bool isdatetime(string str)

            try

                if (!string.isnullorempty(str))

                    datetime.parse(str);

                    return true;

                else

                    return false;

            catch

        #endregion

        #region 其他

  /// 檢查字元串最大長度,傳回指定長度的串

  /// <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;

  /// 字元串編碼

  public static string htmlencode(string inputdata)

   return httputility.htmlencode(inputdata);

  /// 設定label顯示encode的字元串

  /// <param name="lbl"></param>

  /// <param name="txtinput"></param>

  public static void setlabel(label lbl, string txtinput)

   lbl.text = htmlencode(txtinput);

  public static void setlabel(label lbl, object inputobj)

   setlabel(lbl, inputobj.tostring());

  //字元串清理

  public static string inputtext(string inputstring, int maxlength)

   stringbuilder retval = new stringbuilder();

   // 檢查是否為空

   if ((inputstring != null) && (inputstring != string.empty))

    inputstring = inputstring.trim();

    //檢查長度

    if (inputstring.length > maxlength)

     inputstring = inputstring.substring(0, maxlength);

    //替換危險字元

    for (int i = 0; i < inputstring.length; i++)

     switch (inputstring[i])

     {

      case '"':

       retval.append(""");

       break;

      case '<':

       retval.append("<");

      case '>':

       retval.append(">");

      default:

       retval.append(inputstring[i]);

     }

    }    

    retval.replace("'", " ");// 替換單引号

   return retval.tostring();

  /// 轉換成 html code

  /// <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;

  ///解析html成 普通文本

  public static string decode(string str)

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

   str = str.replace(">",">");

   str = str.replace("<","<");

   str = str.replace(" "," ");

   str = str.replace(""",""");

        public static string sqltextclear(string sqltext)

            if (sqltext == null)

            if (sqltext == "")

                return "";

            sqltext = sqltext.replace(",", "");//去除,

            sqltext = sqltext.replace("<", "");//去除<

            sqltext = sqltext.replace(">", "");//去除>

            sqltext = sqltext.replace("--", "");//去除--

            sqltext = sqltext.replace("'", "");//去除'

            sqltext = sqltext.replace(""", "");//去除"

            sqltext = sqltext.replace("=", "");//去除=

            sqltext = sqltext.replace("%", "");//去除%

            sqltext = sqltext.replace(" ", "");//去除空格

            return sqltext;

        #region 是否由特定字元組成

        public static bool iscontainsamechar(string strinput)

            string charinput = string.empty;

            if (!string.isnullorempty(strinput))

                charinput = strinput.substring(0, 1);

            return iscontainsamechar(strinput, charinput, strinput.length);

        public static bool iscontainsamechar(string strinput, string charinput, int leninput)

            if (string.isnullorempty(charinput))

                regex regnumber = new regex(string.format("^([{0}])+$", charinput));

                //regex regnumber = new regex(string.format("^([{0}]{{1}})+$", charinput,leninput));

                match m = regnumber.match(strinput);

                return m.success;

        #region 檢查輸入的參數是不是某些定義好的特殊字元:這個方法目前用于密碼輸入的安全檢查

        /// 檢查輸入的參數是不是某些定義好的特殊字元:這個方法目前用于密碼輸入的安全檢查

        public static bool iscontainspecchar(string strinput)

            string[] list = new string[] { "123456", "654321" };

            bool result = new bool();

            for (int i = 0; i < list.length; i++)

                if (strinput == list[i])

                    result = true;

                    break;

            return result;

    }

}

基本驗證方法

            string strerr = "";

            if (!utility.isnumber(yeartxt.value))

                strerr += "通知卡文号時間錯誤!\\n";

            if (numbertxt.value.trim().length==0)

                strerr += "文檔編号不能為空!\\n";

            if (chargenametxt.value.trim().length == 0)

                strerr += "部門負責人不能為空!\\n";

            if (!utility.isdatetime(completedatetxt.value))

                strerr += "整改日期格式不正确!\\n";

            if (strerr != "")

                jscript.alert(strerr);

                return;

            else

            .......................