Example #1
0
        public void CreateFromObject_CopiesPropertiesFromRegularType()
        {
            // Arrange
            var obj = new RegularType()
            {
                CoolnessFactor = 73
            };

            // Act
            var dict = new RouteValueDictionary(obj);

            // Assert
            Assert.NotNull(dict._propertyStorage);
            Assert.Collection(
                dict.OrderBy(kvp => kvp.Key),
                kvp =>
            {
                Assert.Equal("CoolnessFactor", kvp.Key);
                Assert.Equal(73, kvp.Value);
            },
                kvp =>
            {
                Assert.Equal("IsAwesome", kvp.Key);
                var value = Assert.IsType <bool>(kvp.Value);
                Assert.False(value);
            });
        }
Example #2
0
        public static RegularType GetRegularType(string RegularTypeValue)
        {
            RegularType Resul = RegularType.RegularID;

            try
            {
                Resul = (RegularType)Enum.Parse(typeof(RegularType), RegularTypeValue);
            }
            catch { Resul = RegularType.RegularID; }
            return(Resul);
        }
        public void CreateFromObject_CopiesPropertiesFromRegularType()
        {
            // Arrange
            var obj = new RegularType() { CoolnessFactor = 73 };

            // Act
            var dict = new RouteValueDictionary(obj);

            // Assert
            Assert.Equal(2, dict.Count);
            Assert.Equal(false, dict["IsAwesome"]);
            Assert.Equal(73, dict["CoolnessFactor"]);
        }
Example #4
0
        public void CreateFromObject_CopiesPropertiesFromRegularType()
        {
            // Arrange
            var obj = new RegularType()
            {
                CoolnessFactor = 73
            };

            // Act
            var dict = new RouteValueDictionary(obj);

            // Assert
            Assert.Equal(2, dict.Count);
            Assert.Equal(false, dict["IsAwesome"]);
            Assert.Equal(73, dict["CoolnessFactor"]);
        }
Example #5
0
        /// <summary>
        /// 正则表达式。
        /// </summary>
        /// <param name="type">验证类型</param>
        /// <param name="length">长度</param>
        /// <returns>验证的正则表达式</returns>
        public static string GetRegularString(RegularType type, int length)
        {
            switch (type)
            {
            case RegularType.Word:
                if (length > 0)
                {
                    return(@"^[\w]{0," + string.Format("{0:d}", length) + "}$");
                }
                return(@"^[\w]*$");

            case RegularType.Email:
                return(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");

            case RegularType.Url:
                return(@"^((h|H)(t|T)(t|T)(p|P)|(f|F)(t|T)(p|P)|(f|F)(i|I)(l|L)(e|E)|(t|T)(e|E)(l|L)(n|N)(e|E)(t|T)|(g|G)(o|O)(p|P)(h|H)(e|E)(r|R)|(h|H)(t|T)(t|T)(p|P)(s|S)|(m|M)(a|A)(i|I)(l|L)(t|T)(o|O)|(n|N)(e|E)(w|W)(s|S)|(w|W)(a|A)(i|I)(s|S))://([\w-]+(\.)?)+[\w-]+(:\d+)?(/[\w- ./?%&=]*)?$");

            case RegularType.Number:
                return(@"^-{0,1}\d{1,}\.{0,1}\d{0,}$");

            case RegularType.Int:
                return(@"^-{0,1}\d{1,}$");

            case RegularType.Date:
                return(@"^((((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-))$");

            case RegularType.DateTime:
                return(@"^((((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$");

            case RegularType.Time:
                return(@"^(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$");

            case RegularType.ChinesePostalCode:
                return(@"\d{6}");

            case RegularType.ChineseIDCard:
                return(@"(^\d{17}[xX\d]{1}$)|(^\d{15}$)");

            case RegularType.Domain:
                return(@"^\w+([-.]\w+)*\.\w+([-.]\w+)*$");
            }
            return(string.Empty);
        }
        /// <summary>
        /// 정규식으로 표현
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            try
            {
                if (string.IsNullOrEmpty(this.Value) == true)
                {
                    return(string.Empty);
                }

                if (this.Type == RegularType.TagExcept)
                {
                    return(System.Text.RegularExpressions.Regex.Replace(this.Value, @"<(.|\n)*?>", string.Empty));
                }

                string[] arFilter = { "'", ";",          "--",   "select",    "insert", "update", "delete", "drop",  "union",    "and", "or", "1=1", "sp_", "xp_", "@variable"
                                      ,    "@@variable", "exec", "sysobject", "into",   "set",    "values", "where", "order by", "group by" };


                if (this.Type == RegularType.SqlInjection)
                {
                    foreach (string szFilter in arFilter)
                    {
                        if (this.Value.IndexOf(szFilter, StringComparison.OrdinalIgnoreCase) >= 0)
                        {
                            this.Value = this.Value.Replace(szFilter, "").Trim();
                        }
                    }
                    return(this.Value);
                }

                if (this.Type == RegularType.Xss)
                {
                    string[] arXssFilter = { "javascript", "eval", "print", "perl", "script", "import", "export", "vbscript", "mocha", "livescript", "expression", "echo", "<?", "<%" };
                    foreach (string szFilter in arXssFilter)
                    {
                        if (this.Value.ToLower().IndexOf(szFilter, StringComparison.OrdinalIgnoreCase) >= 0)
                        {
                            this.Value = this.Value.Replace(szFilter, "*").Trim();
                        }
                    }
                    return(this.Value);
                }

                if (this.Type == RegularType.Numeric)
                {
                    return(System.Text.RegularExpressions.Regex.Replace(this.Value, @"[^0-9]", string.Empty));
                }

                if (this.Type == RegularType.AlphabetNumeric)
                {
                    return(System.Text.RegularExpressions.Regex.Replace(this.Value, "[^0-9a-zA-Z]", string.Empty));
                }

                if (this.Type == RegularType.Alphabet)
                {
                    return(System.Text.RegularExpressions.Regex.Replace(this.Value, "[^a-zA-Z]", string.Empty));
                }

                if (this.Type == RegularType.Email)
                {
                    string szEmailValue = System.Text.RegularExpressions.Regex.Replace(this.Value, "/^(w+(?:.w+)*)@((?:w+.)*w[w-]{0,66}).([a-z]{2,6}(?:.[a-z]{2})?)$/i", string.Empty);

                    if (string.IsNullOrEmpty(szEmailValue))
                    {
                        return(string.Empty);
                    }

                    //@.이 존재하는지 본다..
                    if (this.Value.IndexOf('@') > -1 &&
                        this.Value.IndexOf('.') > -1)
                    {
                        string[] arEmail = this.Value.Split('@');
                        if (arEmail.Length < 2)
                        {
                            return(string.Empty);
                        }

                        this.Type  = RegularType.AlphabetNumeric;
                        this.Value = arEmail[0];
                        string szReturnValue = this.ToString();

                        this.Type      = RegularType.AlphabetNumeric;
                        this.Value     = arEmail[1].Split('.')[0];
                        szReturnValue += "@" + this.ToString();

                        this.Type      = RegularType.AlphabetNumeric;
                        this.Value     = arEmail[1].Split('.')[1];
                        szReturnValue += "." + this.ToString();
                        return(szReturnValue);
                    }
                    else
                    {
                        this.Type = RegularType.AlphabetNumeric;
                        return(this.ToString());
                    }
                }
                return(this.Value);
            }
            catch (System.ArgumentException)
            {
                return(string.Empty);
            }
            catch (System.Exception)
            {
                throw;
            }
        }
 public RegularText(string _value, RegularType _type)
 {
     this.Value = _value;
     this.Type  = _type;
 }
Example #8
0
 /// <summary>
 /// 正则表达式。
 /// </summary>
 /// <param name="type">验证类型</param>
 /// <returns>验证的正则表达式</returns>
 public static string GetRegularString(RegularType type)
 {
     return(GetRegularString(type, 0));
 }
Example #9
0
 public void Setup()
 {
     _regular     = new RegularType();
     _specialized = new SpecializedType();
     _heavy       = new HeavyType();
 }
Example #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="input"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static bool TryRegex(string input, RegularType type)
        {
            if (string.IsNullOrEmpty(input))
            {
                return(false);
            }

            string regularExpression = string.Empty;

            switch (type)
            {
            case RegularType.Int:
                regularExpression = @"^\d+$";
                break;

            case RegularType.PositiveInt:
                regularExpression = @"^\+?[1-9][0-9]*$";
                break;

            case RegularType.Money:
                regularExpression = @"^[0-9]+(.[0-9]{2})?$";
                break;

            case RegularType.Mail:
                regularExpression = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
                break;

            case RegularType.Postalcode:
                regularExpression = @"^[0-9]\d{5}$";
                break;

            case RegularType.Phone:
                regularExpression = @"^(\d{3,4}|\d{3,4}-)?\d{7,8}$";
                break;

            case RegularType.Mobile:
                regularExpression = @"^1[1|2|3|4|5|6|7|8|9]\d{9}$";
                break;

            case RegularType.InternetUrl:
                regularExpression = @"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$";
                break;

            case RegularType.IdCard:     //身份证号(15位或18位数字)
                regularExpression = @"^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$";
                break;

            case RegularType.Date:       //日期范围:1900-2099;简单验证1-12月,1-31日
                regularExpression = @"^(19|20)\d{2}-(0?\d|1[012])-(0?\d|[12]\d|3[01])$";
                break;

            case RegularType.Ip:
                regularExpression = @"^(\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])$";
                break;

            case RegularType.QQ:
                regularExpression = @"^[1-9]\d{5,12}$";
                break;

            case RegularType.ChineseName:
                regularExpression = @"[\u4e00-\u9fa5]{2,4}";
                break;

            case RegularType.NickName:
                regularExpression = @"^[^\d_+]([^x00-xff]|[\S]){1,14}$";
                break;

            case RegularType.Account:
                regularExpression = @"^(?![^a-zA-Z]+$).{6,15}$";
                break;

            case RegularType.SystemAccount:
                regularExpression = @"^(v|V)[0-9]+$";
                break;

            case RegularType.LogInPassword:
                regularExpression = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";
                break;

            case RegularType.WalletPassword:
                regularExpression = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";
                break;

            default:
                break;
            }

            Regex regex = new Regex(regularExpression);

            return(regex.Match(input).Success);
        }
Example #11
0
        public static RegularObject Get(RegularType RegularType)
        {
            RegularObject Regular = null;

            switch (RegularType)
            {
            case RegularType.RegularID:
                Regular           = new RegularObject();
                Regular.Regex     = @"[a-zA-Z0-9|.|,|!]{1,100}$";
                Regular.MaskRe    = @"[a-zA-Z0-9|.|!|,|-|_]";
                Regular.MaxLength = 100;
                break;

            case RegularType.RegularBankID:
                Regular           = new RegularObject();
                Regular.Regex     = @"[a-zA-Z0-9|.|,|-|_]{1,150}$";
                Regular.MaskRe    = @"[a-zA-Z0-9|.|,|-|_]";
                Regular.MaxLength = 150;
                break;

            case RegularType.RegularTaxID:
                Regular           = new RegularObject();
                Regular.Regex     = @"[0-9]";
                Regular.MaskRe    = @"[0-9]";
                Regular.MaxLength = 10;
                break;

            case RegularType.RegularIndentity:
                Regular           = new RegularObject();
                Regular.Regex     = @"[0-9]{10}$";
                Regular.MaskRe    = @"[0-9]";
                Regular.MaxLength = 10;
                break;

            case RegularType.RegularMail:
                Regular           = new RegularObject();
                Regular.Regex     = @"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
                Regular.MaskRe    = @"[a-z0-9|.|@]";
                Regular.MaxLength = 100;
                break;

            case RegularType.RegularNunber:
                Regular        = new RegularObject();
                Regular.Regex  = @"(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)";
                Regular.MaskRe = @"(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)";
                break;

            case RegularType.RegularPhone:
                Regular           = new RegularObject();
                Regular.Regex     = @"^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$";
                Regular.MaskRe    = @"[0-9-()]";
                Regular.MaxLength = 20;
                break;

            case RegularType.RegularFax:
                Regular           = new RegularObject();
                Regular.Regex     = @"^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$";
                Regular.MaskRe    = @"[0-9-()]";
                Regular.MaxLength = 20;
                break;

            case RegularType.RegularWebsite:
                Regular           = new RegularObject();
                Regular.Regex     = @"^(((http?)|(https?))\:\/+\/)?((www)|(WWW)|([a-z0-9_-])+\.)*[a-zA-Z0-9_-]+\.(com|com.vn|vn|org|net|mil|edu|COM|COM.VN|ORG|NET|MIL|EDU)$";
                Regular.MaskRe    = @"[a-z0-9wW:/._-]";
                Regular.MaxLength = 100;
                break;

            case RegularType.RegularAccount:
                Regular           = new RegularObject();
                Regular.Regex     = @"[a-zA-Z0-9]{3,10}$";
                Regular.MaskRe    = @"[a-zA-Z0-9 ]";
                Regular.MaxLength = 10;
                break;

            case RegularType.RegularDateVn:
                Regular           = new RegularObject();
                Regular.Format    = @"dd/MM/yyyy";
                Regular.MaskRe    = @"[0-9/ :]";
                Regular.MaxLength = 10;
                break;

            case RegularType.RegularCurrency:
                Regular           = new RegularObject();
                Regular.Regex     = @"^(0-9){0,13}$+.+(0-9){0,5}$";
                Regular.MaskRe    = @"[0-9.]";
                Regular.MaxLength = 10;
                break;

            case RegularType.RegularDateTimeVn:
                Regular           = new RegularObject();
                Regular.Format    = @"dd/MM/yyyy HH:mm:ss";
                Regular.MaskRe    = @"[0-9/]";
                Regular.MaxLength = 20;
                break;

            case RegularType.RegularSerial:
                Regular           = new RegularObject();
                Regular.Regex     = @"[a-zA-Z0-9|.|,|-|_]{1,10}$";
                Regular.MaskRe    = @"[a-zA-Z0-9|.|,|-|_]";
                Regular.MaxLength = 10;
                break;

            case RegularType.RegularDateTime:
                Regular           = new RegularObject();
                Regular.Format    = @"dd/MM/yyyy HH:mm:ss";
                Regular.Regex     = @"[0-3]\d[/][0-3]\d[/][1-9]\d\d\d\s[0-2]\d[:][0-5]\d[:][0-5]\d";
                Regular.MaxLength = 19;
                break;

            case RegularType.RegularTime:
                Regular           = new RegularObject();
                Regular.Format    = @"HH:mm:ss";
                Regular.MaskRe    = @"[0-9/]";
                Regular.MaxLength = 20;
                break;

            default: break;
            }
            return(Regular);
        }
Example #12
0
        public static RegularObject Get(string RegularType)
        {
            RegularType type = GetRegularType(RegularType);

            return(Get(type));
        }
Example #13
0
        public static bool TryRegex(string input, RegularType type)
        {
            if (string.IsNullOrEmpty(input))
            {
                return(false);
            }

            string regularExpression = string.Empty;

            switch (type)
            {
            case RegularType.Int:
                regularExpression = @"^\d+$";
                break;

            case RegularType.PositiveInt:
                regularExpression = @"^\+?[1-9][0-9]*$";
                break;

            case RegularType.Money:
                regularExpression = @"^[0-9]+(.[0-9]{2})?$";
                break;

            case RegularType.Mail:
                regularExpression = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
                break;

            case RegularType.Postalcode:
                regularExpression = @"^d{6}$";
                break;

            case RegularType.Phone:
                regularExpression = @"^(\d{3,4}|\d{3,4}-)?\d{7,8}$";
                break;

            case RegularType.Mobile:
                regularExpression = @"^0?1[3|4|5|6|7|8|9][0-9]\d{8}$";
                break;

            case RegularType.InternetUrl:
                regularExpression = @"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$";
                break;

            case RegularType.IdCard:     //身份证号(15位或18位数字)
                regularExpression = @"^\d{15}|\d{18}$";
                break;

            case RegularType.Date:       //日期范围:1900-2099;简单验证1-12月,1-31日
                regularExpression = @"^(19|20)\d{2}-(0?\d|1[012])-(0?\d|[12]\d|3[01])$";
                break;

            case RegularType.Ip:
                regularExpression = @"^(\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])$";
                break;

            case RegularType.QQ:
                regularExpression = @"^[1-9]\d{5,12}$";
                break;

            case RegularType.ChineseName:
                regularExpression = @"[\u4e00-\u9fa5]{2,4}";
                break;

            case RegularType.NickName:
                regularExpression = @"^[^\d_+]([^x00-xff]|[\S]){1,14}$";
                break;

            default:
                break;
            }

            Regex regex = new Regex(regularExpression);

            return(regex.Match(input).Success);
        }
Example #14
0
 public static string DateToString(DateTime?dt, RegularType re)
 {
     return(String.Format("{0:" + Regular.Get(re).Format + "}", dt));
 }