public void Email_Insert() { var mask = RegexMask.Email(); mask.Mask.Should().Be("Ex. [email protected]"); mask.ToString().Should().Be("|"); mask.Insert("*****@*****.**"); mask.ToString().Should().Be("[email protected]|"); mask.Clear(); mask.Insert("te!@#$%^&*() _+=-{}[]\\|;:'\",<.>/?`[email protected]"); mask.Text.Should().Be("te@_.stdomain.com"); mask.Clear(); mask = RegexMask.Email(); mask.Insert("this beef is dead for 10 hours and 3.45 min"); mask.ToString().Should().Be("thisbeefisdeadfor10hoursand3.45min|"); mask.Text.Should().Be("thisbeefisdeadfor10hoursand3.45min"); mask.GetCleanText().Should().Be("thisbeefisdeadfor10hoursand3.45min"); mask.Selection = (0, 1); mask.Insert("@"); mask.ToString().Should().Be("|hisbeefisdeadfor10hoursand3.45min"); mask.Clear(); mask = RegexMask.Email(); mask.Insert("*****@*****.**"); mask.ToString().Should().Be("[email protected]|"); mask.Selection = (3, 3); mask.Insert("128"); mask.ToString().Should().Be("use128|[email protected]"); mask.Clear(); mask.Insert("*****@*****.**"); mask.ToString().Should().Be("[email protected]|"); mask.Selection = (2, 1); mask.Insert("267"); mask.ToString().Should().Be("us267|[email protected]"); }
/// <summary> /// Creates a predefined RegexMask for an IPv4 Address with or without port masking. /// </summary> /// <param name="includePort"> /// Set to true to include port to the mask. /// </param> /// <param name="maskChar"> /// Set the IPv4 maskChar. Default is '0' /// </param> public static RegexMask IPv4(bool includePort = false, char maskChar = '0') { const string Octet = "25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{0,2}"; var ipv4 = $"(?:{Octet})(?:\\.(?:{Octet})){{0,3}}"; var delimiters = "."; var octetMask = new string(maskChar, 3); var mask = string.Join(delimiters, Enumerable.Repeat(octetMask, 4)); if (includePort) { const string IpPort = "(:|:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?"; ipv4 = $"{ipv4}{IpPort}"; mask = $"{mask}:{new string(maskChar, 5)}"; delimiters += ":"; } var regex = $"^{ipv4}{WhiteSpaceFilter}$"; var regexMask = new RegexMask(regex, mask) { Delimiters = delimiters }; return(regexMask); }
/// <summary> /// Creates a predefined RegexMask for an IPv6 Address with or without port masking. /// </summary> /// <param name="includePort"> /// Set to true to include port to the mask. /// </param> /// <param name="maskChar"> /// Set the IPv6 maskChar. Default is 'X' /// </param> /// <param name="portMaskChar"> /// Set the IPv6 portMask. Default is '0' /// </param> public static RegexMask IPv6(bool includePort = false, char maskChar = 'X', char portMaskChar = '0') { const string Hex = "[0-9A-Fa-f]{0,4}"; const string IPv6Filter = "(?!.*?[:]{2}?:)"; var ipv6 = $"{Hex}(:{Hex}){{0,7}}"; var delimiters = ":"; var hexMask = new string(maskChar, 4); var mask = string.Join(delimiters, Enumerable.Repeat(hexMask, 8)); if (includePort) { const string IpPort = "(\\]|\\]:|\\]:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?"; ipv6 = $"((\\[{ipv6}){IpPort})"; mask = $"[{mask}]:{new(portMaskChar, 5)}"; delimiters += "[]"; } var regex = $"^{IPv6Filter}{ipv6}{WhiteSpaceFilter}$"; var regexMask = new RegexMask(regex, mask) { Delimiters = delimiters, AllowOnlyDelimiters = true }; return(regexMask); }
public void IPv6WithPort_Insert() { var mask = RegexMask.IPv6(true); mask.Mask.Should().Be("[XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX]:00000"); mask.ToString().Should().Be("|"); mask.Insert("[::"); mask.ToString().Should().Be("[::|"); mask.Insert("123"); mask.ToString().Should().Be("[::123|"); mask.Insert("456"); mask.ToString().Should().Be("[::1234:56|"); mask.Clear(); mask.Insert("20010db80000000034f400000000f3dd"); mask.ToString().Should().Be("[2001:0db8:0000:0000:34f4:0000:0000:f3dd|"); mask.Clear(); mask.Insert("2001:0db8:0000:0000:34f4:0000:0000:f3dd"); mask.ToString().Should().Be("[2001:0db8:0000:0000:34f4:0000:0000:f3dd|"); mask.Clear(); mask.Insert("2001db8::34f400000000f3dd"); mask.ToString().Should().Be("[2001:db8::34f4:0000:0000:f3dd|"); mask.Clear(); mask.Insert("2001db8::34f40:0:f3dd"); mask.ToString().Should().Be("[2001:db8::34f4:0:0:f3dd|"); mask.Clear(); mask = RegexMask.IPv6(true); mask.Insert("this beef is dead for 2001 hours and 345 min"); mask.ToString().Should().Be("[beef:dead:f200:1ad3:45|"); mask.Text.Should().Be("[beef:dead:f200:1ad3:45"); mask.GetCleanText().Should().Be("[beef:dead:f200:1ad3:45"); mask.Selection = (1, 2); mask.Insert("2"); mask.ToString().Should().Be("[2|eef:dead:f200:1ad3:45"); mask.Clear(); mask = RegexMask.IPv6(true); mask.Insert("00000000000000000000000000000000"); mask.ToString().Should().Be("[0000:0000:0000:0000:0000:0000:0000:0000|"); mask.Selection = (6, 4); mask.Insert("34f4"); mask.ToString().Should().Be("[0000:34f4|:0000:0000:0000:0000:0000:0000]:"); mask.Clear(); mask.Insert("0:0:0:0:0:0:0:0"); mask.ToString().Should().Be("[0:0:0:0:0:0:0:0|"); mask.Selection = (15, 1); mask.Insert("0db8"); mask.ToString().Should().Be("[0:0:0:0:0:0:0:0db8|"); mask = RegexMask.IPv6(true); mask.Insert("00000000000000000000000000000000:1"); mask.ToString().Should().Be("[0000:0000:0000:0000:0000:0000:0000:0000]:1|"); mask.Selection = (6, 4); mask.Insert("34f4"); mask.ToString().Should().Be("[0000:34f4|:0000:0000:0000:0000:0000:0000]:1"); mask.Clear(); mask.Insert("0:0:0:0:0:0:0:0:1"); mask.ToString().Should().Be("[0:0:0:0:0:0:0:0]:1|"); mask.Selection = (15, 1); mask.Insert("0db8"); mask.ToString().Should().Be("[0:0:0:0:0:0:0:0db8|]:1"); }
public void IPv4WithPort_Mask() { var mask = RegexMask.IPv4(true); mask.Mask.Should().Be("000.000.000.000:00000"); mask.ToString().Should().Be("|"); mask.Insert("25525525525525525"); mask.Mask.Should().Be("000.000.000.000:00000"); }
public void RegexMask_UpdateFrom() { var mask = new RegexMask("^[0-9]+$"); mask.SetText("1234"); mask.CaretPos = 1; mask.UpdateFrom(null); mask.ToString().Should().Be("1|234"); }
public void RegexMask_Backspace() { var mask = new RegexMask("^[0-9]+$"); mask.SetText("1234"); mask.CaretPos = 1; mask.Backspace(); mask.ToString().Should().Be("|234"); }
public void RegexMask_Delete() { var mask = new RegexMask("^[0-9]+$"); mask.SetText("1234"); mask.CaretPos = 1; mask.Delete(); mask.ToString().Should().Be("1|34"); }
public void Email_Backspace() { var mask = RegexMask.Email(); mask.SetText("*****@*****.**"); mask.CaretPos = 1; mask.Backspace(); mask.ToString().Should().Be("|[email protected]"); }
public void IPv6_Mask() { var mask = RegexMask.IPv6(); mask.Mask.Should().Be("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"); mask.ToString().Should().Be("|"); mask.Insert("255255255255"); mask.Mask.Should().Be("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"); }
public void IPv6WithPort_Mask() { var mask = RegexMask.IPv6(true); mask.Mask.Should().Be("[XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX]:00000"); mask.ToString().Should().Be("|"); mask.Insert("255255255255"); mask.Mask.Should().Be("[XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX]:00000"); }
public void IPv6_UpdateFrom() { var mask = RegexMask.IPv6(); mask.SetText("2001db8::34f400000000f3dd"); mask.CaretPos = 1; mask.UpdateFrom(null); mask.ToString().Should().Be("2|001:db8::34f4:0000:0000:f3dd"); }
public void Email_Delete() { var mask = RegexMask.Email(); mask.SetText("*****@*****.**"); mask.CaretPos = 1; mask.Delete(); mask.ToString().Should().Be("t|[email protected]"); }
public void IPv4_UpdateFrom() { var mask = RegexMask.IPv4(); mask.SetText("265245"); mask.CaretPos = 1; mask.UpdateFrom(null); mask.ToString().Should().Be("2|6.52.45"); }
public void Email_UpdateFrom() { var mask = RegexMask.Email(); mask.SetText("*****@*****.**"); mask.CaretPos = 1; mask.UpdateFrom(null); mask.ToString().Should().Be("t|[email protected]"); }
public void IPv4_Delete() { var mask = RegexMask.IPv4(); mask.SetText("265245"); mask.CaretPos = 1; mask.Delete(); mask.ToString().Should().Be("2|.52.45"); }
public void IPv4_Backspace() { var mask = RegexMask.IPv4(); mask.SetText("265245"); mask.CaretPos = 1; mask.Backspace(); mask.ToString().Should().Be("|6.52.45"); }
public void IPv4_Mask() { var mask = RegexMask.IPv4(); mask.Mask.Should().Be("000.000.000.000"); mask.ToString().Should().Be("|"); mask.Insert("255255255255"); mask.Mask.Should().Be("000.000.000.000"); }
public void IPv6_Backspace() { var mask = RegexMask.IPv6(); mask.SetText("2001db8::34f400000000f3dd"); mask.CaretPos = 1; mask.Backspace(); mask.ToString().Should().Be("|001:db8::34f4:0000:0000:f3dd"); }
public void Email_Mask() { var mask = RegexMask.Email(); mask.Mask.Should().Be("Ex. [email protected]"); mask = RegexMask.Email("*****@*****.**"); mask.Mask.Should().Be("*****@*****.**"); mask.ToString().Should().Be("|"); mask.Insert("*****@*****.**"); mask.Mask.Should().Be("*****@*****.**"); }
/// <summary> /// Creates a predefined RegexMask for Email Address. /// </summary> /// <param name="mask"> /// Set the email mask. Default is "Ex. [email protected]" /// </param> public static RegexMask Email(string mask = "Ex. [email protected]") { const string Regex = $"^(?>[\\w\\-\\+]+\\.?)+(?>@?|@)(?<!(\\.@))(?>\\w+\\.)*(\\w+)?{WhiteSpaceFilter}$"; const string Delimiters = "@."; var regexMask = new RegexMask(Regex, mask) { Delimiters = Delimiters }; return(regexMask); }
public void IPv6_Insert() { var mask = RegexMask.IPv6(); mask.Mask.Should().Be("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"); mask.ToString().Should().Be("|"); mask.Insert("::"); mask.ToString().Should().Be("::|"); mask.Insert("123"); mask.ToString().Should().Be("::123|"); mask.Insert("456"); mask.ToString().Should().Be("::1234:56|"); mask.Clear(); mask.Insert("20010db80000000034f400000000f3dd"); mask.ToString().Should().Be("2001:0db8:0000:0000:34f4:0000:0000:f3dd|"); mask.Clear(); mask.Insert("2001:0db8:0000:0000:34f4:0000:0000:f3dd"); mask.ToString().Should().Be("2001:0db8:0000:0000:34f4:0000:0000:f3dd|"); mask.Clear(); mask.Insert("2001db8::34f400000000f3dd"); mask.ToString().Should().Be("2001:db8::34f4:0000:0000:f3dd|"); mask.Clear(); mask.Insert("2001db8::34f40:0:f3dd"); mask.ToString().Should().Be("2001:db8::34f4:0:0:f3dd|"); mask.Clear(); mask = RegexMask.IPv6(); mask.Insert("this beef is dead for 2001 hours and 345 min"); mask.ToString().Should().Be("beef:dead:f200:1ad3:45|"); mask.Text.Should().Be("beef:dead:f200:1ad3:45"); mask.GetCleanText().Should().Be("beef:dead:f200:1ad3:45"); mask.Selection = (0, 1); mask.Insert("2"); mask.ToString().Should().Be("2|eef:dead:f200:1ad3:45"); mask.Clear(); mask = RegexMask.IPv6(); mask.Insert("00000000000000000000000000000000"); mask.ToString().Should().Be("0000:0000:0000:0000:0000:0000:0000:0000|"); mask.Selection = (5, 4); mask.Insert("34f4"); mask.ToString().Should().Be("0000:34f4|:0000:0000:0000:0000:0000:0000"); mask.Clear(); mask.Insert("0:0:0:0:0:0:0:0"); mask.ToString().Should().Be("0:0:0:0:0:0:0:0|"); mask.Selection = (14, 1); mask.Insert("0db8"); mask.ToString().Should().Be("0:0:0:0:0:0:0:0db8|"); mask = RegexMask.IPv6(); mask.ToString().Should().Be("|"); mask.Insert("0:0:0:0:0:0:0:0\n"); mask.ToString().Should().Be("0:0:0:0:0:0:0:0|"); mask.Text.IndexOf('\n').Should().Be(-1); }
public void IPv4WithPort_UpdateFrom() { var mask = RegexMask.IPv4(true); mask.SetText("265245"); mask.CaretPos = 1; mask.UpdateFrom(null); mask.ToString().Should().Be("2|6.52.45"); mask = RegexMask.IPv4(true); mask.SetText("265245245245246"); mask.CaretPos = 1; mask.UpdateFrom(null); mask.ToString().Should().Be("2|6.52.45.245:24524"); }
public void IPv4WithPort_Backspace() { var mask = RegexMask.IPv4(true); mask.SetText("265245"); mask.CaretPos = 1; mask.Backspace(); mask.ToString().Should().Be("|6.52.45"); mask = RegexMask.IPv4(true); mask.SetText("265245245245246"); mask.CaretPos = 1; mask.Backspace(); mask.ToString().Should().Be("|6.52.45.245:24524"); }
public void IPv6WithPort_UpdateFrom() { var mask = RegexMask.IPv6(true); mask.SetText("2001db8::34f400000000f3dd34f4"); mask.CaretPos = 2; mask.UpdateFrom(null); mask.ToString().Should().Be("[2|001:db8::34f4:0000:0000:f3dd:34f4"); mask = RegexMask.IPv6(true); mask.SetText("2001db8::34f400000000f3dd34f4:24524"); mask.CaretPos = 2; mask.UpdateFrom(null); mask.ToString().Should().Be("[2|001:db8::34f4:0000:0000:f3dd:34f4]:24524"); }
public void IPv6WithPort_Backspace() { var mask = RegexMask.IPv6(true); mask.SetText("2001db8::34f400000000f3dd34f4"); mask.CaretPos = 2; mask.Backspace(); mask.ToString().Should().Be("[|001:db8::34f4:0000:0000:f3dd:34f4"); mask = RegexMask.IPv6(true); mask.SetText("2001db8::34f400000000f3dd34f434f4:24524"); mask.ToString().Should().Be("[2001:db8::34f4:0000:0000:f3dd:34f4]:24524|"); mask.CaretPos = 2; mask.Backspace(); mask.ToString().Should().Be("[|001:db8::34f4:0000:0000:f3dd:34f4]:24524"); }
public void IPv4_Insert() { var mask = RegexMask.IPv4(); mask.Mask.Should().Be("000.000.000.000"); mask.ToString().Should().Be("|"); mask.Insert("255255"); mask.ToString().Should().Be("255.255|"); mask.Clear(); mask.Insert("xx12.34xx.5678"); mask.Text.Should().Be("12.34.56.78"); mask.Clear(); mask = RegexMask.IPv4(); mask.Insert("this beef is dead for 10000 hours and 345 min"); mask.ToString().Should().Be("100.003.45|"); mask.Text.Should().Be("100.003.45"); mask.GetCleanText().Should().Be("100.003.45"); mask.Selection = (0, 1); mask.Insert("2"); mask.ToString().Should().Be("2|00.003.45"); mask.Clear(); mask = RegexMask.IPv4(); mask.Insert("255255255255"); mask.ToString().Should().Be("255.255.255.255|"); mask.Clear(); mask.Insert("000000000000"); mask.ToString().Should().Be("000.000.000.000|"); mask.Selection = (3, 3); mask.Insert("128"); mask.ToString().Should().Be("000.128|.000.000"); mask.Clear(); mask.Insert("0.0.0.0"); mask.ToString().Should().Be("0.0.0.0|"); mask.Selection = (2, 1); mask.Insert("267"); mask.ToString().Should().Be("0.26.7|0.00"); mask = RegexMask.IPv4(); mask.ToString().Should().Be("|"); mask.Insert("255255255255\n"); mask.ToString().Should().Be("255.255.255.255|"); mask.Text.IndexOf('\n').Should().Be(-1); }
public void RegexMask_Insert() { var mask = new RegexMask("^[0-9]+$"); mask.ToString().Should().Be("|"); mask.Insert("12."); mask.ToString().Should().Be("12|"); mask.Clear(); mask.Insert("xx12.34xx.5678"); mask.Text.Should().Be("12345678"); mask.Clear(); mask = new RegexMask("^[a-f0-9]+$"); mask.Insert("this beef is dead for 10 hours now"); mask.ToString().Should().Be("beefdeadf10|"); mask.Text.Should().Be("beefdeadf10"); mask.GetCleanText().Should().Be("beefdeadf10"); mask.Selection = (0, 1); mask.Insert("1"); mask.ToString().Should().Be("1|eefdeadf10"); }
/// <summary> /// Creates a predefined RegexMask for an IPv4 Address with or without port masking. /// </summary> /// <param name="includePort"> /// /// Set to true to include port to the mask. /// </param> public static RegexMask IPv4(bool includePort = false) { const string Octet = "(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{0,2})"; var ipv4 = $"({Octet})(\\.|\\.{Octet}){{0,3}}"; var mask = "000.000.000.000"; var delimiters = "."; if (includePort) { const string IpPort = "(:|:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?"; ipv4 = $"{ipv4}{IpPort}"; mask = $"{mask}:00000"; delimiters += ":"; } var regex = $"^{ipv4}$"; var regexMask = new RegexMask(regex, mask) { Delimiters = delimiters }; return(regexMask); }
/// <summary> /// Creates a predefined RegexMask for an IPv6 Address with or without port masking. /// </summary> /// <param name="includePort"> /// /// Set to true to include port to the mask. /// </param> public static RegexMask IPv6(bool includePort = false) { const string Hex = "[0-9A-Fa-f]{0,4}"; const string IPv6Filter = "(?!.*?[:]{2}?:)"; var ipv6 = $"{Hex}(:{Hex}){{0,7}}"; var mask = "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"; var delimiters = ":"; if (includePort) { const string IpPort = "(\\]|\\]:|\\]:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?"; ipv6 = $"((\\[{ipv6}){IpPort})"; mask = $"[{mask}]:00000"; delimiters += "[]"; } var regex = $"^{IPv6Filter}{ipv6}$"; var regexMask = new RegexMask(regex, mask) { Delimiters = delimiters, AllowOnlyDelimiters = true }; return(regexMask); }