C# WPF dozwolona kombinacja znaków

0

piszę program do obliczeń mam mały problem z textboxami:
-ustawiłem już mozliwosc wprowadzania tylko wybranych znaków tj. cyfry, minus oraz przecinek [ takie są tylko potrzebne ]
-ustawiłem max ilosc znaków tj. 4

normalna wartosci to np. 5 lub -10 lub 80,6. Niestety jest mozliwosc wpisania kombinacji typu: minus minus przecinek [ w różnych kombinacjach ] co powoduje błędy.
Moje pytanie jak ustawić dozwoloną kolejność, np. minus tylko na 1 miejscu, a nie "5-5" [ w środku ] ???

1

Klasa Regex, może Ci pomóc np. zrób sobie walidację.

^-\d{1,4}$ // Tutaj masz przykład, gdzie masz wpisać liczbę max 4 cyfrową ujemną

https://www.regextester.com // Tutaj możesz przetestować swoją walidację

https://msdn.microsoft.com/pl-pl/library/3y21t6y4(v=vs.110).aspx // Przykład od microsoftu

0

dzieki kolego za podpowiedz, niestety cos tu jest nie tak.
to co napisales "^-\d{1,4}$" podkresla w punkcie \d. Korzystajac z regexa ulozylem ciąg "^-{0,1}[0-9]{0,3},{0,1}[0-9]{1,2}$" ktory idealnie dziala na https://regex101.com/ (online) natomiast u mnie w VisualStudio C# aplikacja WPF, nie wyrzuca błędu kompilator, ale tez i ta formuła jest jakby niewidoczna mozna wpisac kazdy zupelnie dowolny znak w dowolnej kombinacji. Proszę o podpowiedź, a wyglada to tak:

private void x1_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("^-{0,1}[0-9]{1,3},{0,1}[0-9]{1,2}$");
e.Handled = regex.IsMatch(e.Text);
}

1

musisz postawić @ przed "^-\d{1,4}$" czyli coś takiego

 string valid = @"^-\d{1,4}$" lub string valid = "^-\\d{1,4}$";

Tutaj test jednak działa. Tutaj masz link, żeby sprawdzić http://rextester.com/CCBZ36351

      public static void Main(string[] args)
        {
             string rw = "-\\d{1,4}$";
             Regex regex = new Regex(rw);
           
             Match match = regex.Match("-5321");
        if (match.Success)
        {
            Console.WriteLine(match.Value);
        }
            else 
        {
            Console.Write("Błąd");
        }
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1