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); }); }
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"]); }
/// <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; }
/// <summary> /// 正则表达式。 /// </summary> /// <param name="type">验证类型</param> /// <returns>验证的正则表达式</returns> public static string GetRegularString(RegularType type) { return(GetRegularString(type, 0)); }
public void Setup() { _regular = new RegularType(); _specialized = new SpecializedType(); _heavy = new HeavyType(); }
/// <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); }
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); }
public static RegularObject Get(string RegularType) { RegularType type = GetRegularType(RegularType); return(Get(type)); }
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); }
public static string DateToString(DateTime?dt, RegularType re) { return(String.Format("{0:" + Regular.Get(re).Format + "}", dt)); }