using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace WcfControlMonitorLib
{
    /// <summary>
	/// RegexValid 正则表达式匹配类
	/// </summary>
   public static class CRegexValid
    {
        
        #region     ------匹配规则字符串
        /// <summary>
        /// 验证Email格式
        /// </summary>
        static public string 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>
        /// 验证出生日期
        /// </summary>
        static public string Brith = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
       
        /// <summary>
        /// 验证URL
        /// </summary>
        static public string URL = @"^\s*(\d{4})-(\d{2})-(\d{2})\s*$";

        /// <summary>
        /// 验证用户密码
        /// </summary>
        static public string Pwd = @"^[a-zA-Z]\w{5,17}$";

        /// <summary>
        /// 只能输入汉字
        /// </summary>
        static public string Chinese = @"^[\u4e00-\u9fa5]{0,}$";
        
        /// <summary>
        /// 验证是否为整数
        /// </summary>
        static public string Integer = @"^[0-9]*$";

        /// <summary>
        /// 只能输入非零的正整数
        /// </summary>
        static public string Positive = @"^\+?[1-9][0-9]*$";

        /// <summary>
        /// 只能输入由 26 个英文字母组成的字符串
        /// </summary>
        static public string LetterStr = @"^[A-Za-z]+$";

        /// <summary>
        /// 只能输入由数字和 26 个英文字母组成的字符串
        /// </summary>
        static public string NumLetterStr = @"^[A-Za-z0-9]+$";

        #endregion

        #region     --------网络应用

        /// <summary>
		/// 验证Email格式
		/// </summary>
		/// <param name="strEmail">验证字符串</param>
		/// <returns>合法返回true,否则返回false</returns>
		public static bool IsValidEmai(string strEmail)
		{
            return Regex.IsMatch(strEmail, Email);
		}

		/// <summary>
		/// 验证出生日期
		/// </summary>
        /// <param name="strBirth">验证字符串</param>
		/// <returns>合法返回true,否则返回false</returns>
		public static bool IsValidBirth(string strBirth)
		{
            return Regex.IsMatch(strBirth, Brith);
		}

		/// <summary>
		/// 验证URL
		/// </summary>
        /// <param name="strURL">验证字符串</param>
		/// <returns>合法返回true,否则返回false</returns>
		public static bool IsValidURL(string strURL)
		{
            return Regex.IsMatch(strURL,URL);
		}

        /// <summary>
        /// 验证用户密码,以字母开头,长度在6~18之间,只能包含字符、数字和下划线
        /// </summary>
        /// <param name="str1">验证字符串</param>
        /// <returns>合法返回true,否则返回false</returns>
        public static bool IsValidPassword(string str1)
        {
            return Regex.IsMatch(str1, Pwd);
        }

        /// <summary>
        /// 只能输入汉字
        /// </summary>
        /// <param name="str1">验证字符串</param>
        /// <returns>合法返回true,否则返回false</returns>
        public static bool IsValidChinese(string str1)
        {
            return Regex.IsMatch(str1, Chinese);
        }

        #endregion

        #region     -----数字验证
        /// <summary>
        /// 验证是否为整数
        /// </summary>
        /// <param name="str1">验证字符串</param>
        /// <returns>合法返回true,否则返回false</returns>
        public static bool IsValidInteger(string str1)
        {
            return Regex.IsMatch(str1,Integer );
        }

        /// <summary>
        /// 只能输入非零的正整数
        /// </summary>
        /// <param name="str1">验证字符串</param>
        /// <returns>合法返回true,否则返回false</returns>
        public static bool IsValidPositive(string str1)
        {
            return Regex.IsMatch(str1, Positive);
        }

        #endregion

        #region     -------字符串验证

        /// <summary>
        /// 只能输入由 26 个英文字母组成的字符串
        /// </summary>
        /// <param name="str1">验证字符串</param>
        /// <returns>合法返回true,否则返回false</returns>
        public static bool IsValidLetterStr(string str1)
        {
            return Regex.IsMatch(str1, LetterStr);
        }

        /// <summary>
        /// 只能输入由数字和 26 个英文字母组成的字符串
        /// </summary>
        /// <param name="str1">验证字符串</param>
        /// <returns>合法返回true,否则返回false</returns>
        public static bool IsValidNumLetterStr(string str1)
        {
            return Regex.IsMatch(str1, NumLetterStr);
        }

        

        #endregion


	}


    
}