Common层通用代码之服务器端正则表达式验证

来源:互联网 发布:武汉网络电视台 编辑:程序博客网 时间:2024/05/18 02:04
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI.WebControls;

namespace Common
{
    
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 RegCHZN = new Regex(@"[/u4e00-/u9fa5]");
        
private static Regex RegDate = new Regex(@"^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");
        
private static Regex RegDateTime = new Regex(@"^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?/d):[0-5]?/d:[0-5]?/d$");

        
public PageValidate()
        
{
        }


        
#region 日期格式检查
        
/// <summary>
        
/// 是否是日期格式
        
/// </summary>
        
/// <param name="inputData">输入字符串</param>
        
/// <returns></returns>

        public static bool IsDate(string inputData)
        
{
            Match m 
= RegDate.Match(inputData);
            
return m.Success;
        }



        
/// <summary>
        
/// 是否是带时间的日期格式
        
/// </summary>
        
/// <param name="inputData">输入字符串</param>
        
/// <returns></returns>

        public static bool IsDateTime(string inputData)
        
{
            Match m 
= RegDateTime.Match(inputData);
            
return m.Success;
        }

        
#endregion


        
#region 数字字符串检查

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

        
/// <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 IsDecimal(string inputData)
        
{
            Match m 
= RegDecimal.Match(inputData);
            
return m.Success;
        }

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


        
#endregion


        
#region 邮件地址
        
/// <summary>
        
/// 是否是浮点数 可带正负号
        
/// </summary>
        
/// <param name="inputData">输入字符串</param>
        
/// <returns></returns>

        public static bool IsEmail(string inputData)
        
{
            Match m 
= RegEmail.Match(inputData);
            
return m.Success;
        }


        
#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;
        }



        
/// <summary>
        
/// 字符串编码
        
/// </summary>
        
/// <param name="inputData"></param>
        
/// <returns></returns>

        public static string HtmlEncode(string inputData)
        
{
            
return HttpUtility.HtmlEncode(inputData);
        }

        
/// <summary>
        
/// 设置Label显示Encode的字符串
        
/// </summary>
        
/// <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());
        }


        
#endregion


    }

}