Пример #1
0
    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]");
    }
Пример #2
0
    /// <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);
    }
Пример #3
0
    /// <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);
    }
Пример #4
0
    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");
    }
Пример #5
0
    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");
    }
Пример #6
0
    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");
    }
Пример #7
0
    public void RegexMask_Backspace()
    {
        var mask = new RegexMask("^[0-9]+$");

        mask.SetText("1234");
        mask.CaretPos = 1;
        mask.Backspace();
        mask.ToString().Should().Be("|234");
    }
Пример #8
0
    public void RegexMask_Delete()
    {
        var mask = new RegexMask("^[0-9]+$");

        mask.SetText("1234");
        mask.CaretPos = 1;
        mask.Delete();
        mask.ToString().Should().Be("1|34");
    }
Пример #9
0
    public void Email_Backspace()
    {
        var mask = RegexMask.Email();

        mask.SetText("*****@*****.**");
        mask.CaretPos = 1;
        mask.Backspace();
        mask.ToString().Should().Be("|[email protected]");
    }
Пример #10
0
    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");
    }
Пример #11
0
    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");
    }
Пример #12
0
    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");
    }
Пример #13
0
    public void Email_Delete()
    {
        var mask = RegexMask.Email();

        mask.SetText("*****@*****.**");
        mask.CaretPos = 1;
        mask.Delete();
        mask.ToString().Should().Be("t|[email protected]");
    }
Пример #14
0
    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");
    }
Пример #15
0
    public void Email_UpdateFrom()
    {
        var mask = RegexMask.Email();

        mask.SetText("*****@*****.**");
        mask.CaretPos = 1;
        mask.UpdateFrom(null);
        mask.ToString().Should().Be("t|[email protected]");
    }
Пример #16
0
    public void IPv4_Delete()
    {
        var mask = RegexMask.IPv4();

        mask.SetText("265245");
        mask.CaretPos = 1;
        mask.Delete();
        mask.ToString().Should().Be("2|.52.45");
    }
Пример #17
0
    public void IPv4_Backspace()
    {
        var mask = RegexMask.IPv4();

        mask.SetText("265245");
        mask.CaretPos = 1;
        mask.Backspace();
        mask.ToString().Should().Be("|6.52.45");
    }
Пример #18
0
    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");
    }
Пример #19
0
    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");
    }
Пример #20
0
    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("*****@*****.**");
    }
Пример #21
0
    /// <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);
    }
Пример #22
0
    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);
    }
Пример #23
0
    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");
    }
Пример #24
0
    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");
    }
Пример #25
0
    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");
    }
Пример #26
0
    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");
    }
Пример #27
0
    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);
    }
Пример #28
0
    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");
    }
Пример #29
0
    /// <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);
    }
Пример #30
0
    /// <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);
    }