1. 程式人生 > >分享一個正則表示式幫助類

分享一個正則表示式幫助類

using System.Globalization;
using System.Text.RegularExpressions;


/// <summary>
/// 正則表示式幫助類
/// </summary>
public sealed class RegexHelper
{
private RegexHelper()
{
}

/// <summary>
/// 清除包含'字串
/// </summary>
public const string CLEAN_STRING = @"[']";

/// <summary>
/// 驗證字串是否為字元begin-end之間
/// </summary>
public const string IS_VALID_BYTE = @"^[A-Za-z0-9]{#0#,#1#}$";

/// <summary>
/// 驗證字串是否為年月日
/// </summary>
public const string IS_VALID_DATE =
@"^2\d{3}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[1-2]\d|3[0-1])(?:0?[1-9]|1\d|2[0-3]):(?:0?[1-9]|[1-5]\d):(?:0?[1-9]|[1-5]\d)$";

/// <summary>
/// 驗證字串是否為小數
/// </summary>
public const string IS_VALID_DECIMAL = @"[0].\d{1,2}|[1]";

/// <summary>
/// 驗證字串是否為EMAIL
/// </summary>
public const string IS_VALID_EMAIL =
@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

/// <summary>
/// 驗證字串是否為IP
/// </summary>
public const string IS_VALID_IP =
@"^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$";

/// <summary>
/// 驗證字串是否為字尾名
/// </summary>
public const string IS_VALID_POSTFIX = @"\.(?i:{0})$";

/// <summary>
/// 驗證字串是否為電話號碼
/// </summary>
public const string IS_VALID_TEL = @"(\d+-)?(\d{4}-?\d{7}|\d{3}-?\d{8}|^\d{7,8})(-\d+)?";

/// <summary>
/// 驗證字串是否為URL
/// </summary>
public const string IS_VALID_URL = @"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$";

#region 替換字串
/// <summary>
/// 替換字串
/// </summary>
/// <param name="input">輸入字串</param>
/// <param name="regex">正則表示式</param>
/// <returns>替換後字串</returns>
public static string ReplaceInput(string input, string regex)
{
return Regex.Replace(input, regex, string.Empty);
}

/// <summary>
/// 替換字串
/// </summary>
/// <param name="input">輸入字串</param>
/// <param name="regex">正則表示式</param>
/// <param name="replace">替換字串</param>
/// <returns>替換後字串</returns>
public static string ReplaceInput(string input, string regex, string replace)
{
return Regex.Replace(input, regex, replace);
}

#endregion

#region 驗證字串

/// <summary>
/// 驗證字串
/// </summary>
/// <param name="input">輸入字串</param>
/// <param name="regex">正則表示式</param>
/// <returns>是否驗證通過</returns>
public static bool CheckInput(string input, string regex)
{
return Regex.IsMatch(input, regex);
}

#endregion

#region 常用方法

/// <summary>
/// 驗證字串
/// </summary>
/// <param name="input">輸入字串</param>
/// <param name="regex">正則表示式</param>
/// <param name="begin">開始數字</param>
/// <param name="end">結尾數字</param>
/// <returns>是否驗證通過</returns>
public static bool ValidByte(string input, string regex, int begin, int end)
{
bool ret = false;
if (!string.IsNullOrEmpty(regex))
{
string rep = regex.Replace("#0#", begin.ToString(CultureInfo.InvariantCulture));
rep = rep.Replace("#1#", end.ToString(CultureInfo.InvariantCulture));
ret = CheckInput(input, rep);
}
return ret;
}

/// <summary>
/// 驗證字串
/// </summary>
/// <param name="input">輸入字串</param>
/// <param name="regex">正則表示式</param>
/// <param name="fix">字尾名</param>
/// <returns>是否驗證通過</returns>
public static bool ValidPostfix(string input, string regex, string fix)
{
string ret = string.Format(CultureInfo.InvariantCulture, regex, fix);
return CheckInput(input, ret);
}

#endregion


}