.
Anmeldung | Registrieren | Hilfe
in Suchen

Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

Letzter Beitrag 04. Aug 2016 10:16 von 5p1k3. 5 Antworten.
Seite 1 von 1 (6 Treffer)
Beiträge sortieren: Zurück Weiter
  • 03. Aug 2016 11:14

    • 5p1k3
    • Top 200 Mitwirkender
    • Registriert am 03. Aug 2016
    • Beiträge 8
    • Punkte 85

    Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

    Hallo,

    ich möchte gerne Folgendes bewerkstelligen:

    Eine Textbox soll nur eingaben nach dem Muster 1234-1234 akzeptieren.

    Über Regex ließe sich eine Restriktion nur auf Zahlen und den Bindestrich umsetzen, ich möchte die Position des Bindestriches jedoch auch kontrollieren.

    Danke im Voraus.

    Gruß

    5p1k3
    • IP-Adresse ist Registriert
  • 03. Aug 2016 11:34 Antwort zu

    • Jan Welker
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 90491
    • Beiträge 1.511
    • Punkte 20.645
    • Moderator

    Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

    Hallo,

    Sind es immer 8 Zahlen? Oder können es auch mehr oder weniger sein?
    Kann der Bindestrich an jeder Position (auch Anfang, Ende) stehen?
    Schreib am besten mal 5 gültige und 5 ungültige Varianten auf.

    Mit Regex kann man schon viel machen :)
    Jan

    • IP-Adresse ist Registriert
  • 03. Aug 2016 11:55 Antwort zu

    • 5p1k3
    • Top 200 Mitwirkender
    • Registriert am 03. Aug 2016
    • Beiträge 8
    • Punkte 85

    Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

    Hallo,

    Gültig:
    1234-1
    1234-12
    1234-123
    1234-1234

    Ungültig:
    123-1
    12-1
    1234-12345
    12345-12345
    1-1

    Also es sind maximal 8 Zahlen mit dem Bindestrich immer an Stelle 5, zuvor immer 4 Zahlen.

    Gruß

    5p1k3
    • IP-Adresse ist Registriert
  • 03. Aug 2016 12:00 Antwort zu

    • Jan Welker
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 90491
    • Beiträge 1.511
    • Punkte 20.645
    • Moderator

    Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

    Dann sollte dieser Regex funktionieren:

    ^\d{4}[-]\d{1,4}$

    Jan
    • IP-Adresse ist Registriert
  • 03. Aug 2016 13:20 Antwort zu

    • 5p1k3
    • Top 200 Mitwirkender
    • Registriert am 03. Aug 2016
    • Beiträge 8
    • Punkte 85

    Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

    Hallo,

    irgendwie bekomme ich es nicht zum Laufen.

    [code]
            private void textBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
            {
                Regex regex = new Regex(@"^\d{4}[-]\d{1,4}$");
                e.Handled = !regex.IsMatch((sender as TextBox).Text.Insert((sender as TextBox).SelectionStart, e.Text));
            }
    [/code]

    Dies akzeptiert nun gar keine Eingaben Embarrassed

    Gruß

    5p1k3

    Edit:

    [code]
            private void textBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
            {
                Regex regex = new Regex(@"^\d{4}[-]\d{1,4}$");
                e.Handled = regex.IsMatch((sender as TextBox).Text.Insert((sender as TextBox).SelectionStart, e.Text));
            }
    [/code]

    So nimmt er die Eingaben bis zum Bindestrich und dann ist Schluss, oder alles nach dem Bindestrich.

    Edit2: Hab gerade gesehen nun nimmt er aber bis zum Bindestrich auch wieder Buchstaben und Co.

    Also nochmal kurz zur Erläuterung:

    Es ist folgendes zulässig --> 1234 (4 Zahlen von 1000-9999) - (Bindestrich an dieser Stelle zwingend) 1/12/123/1234 (1-4 Zahlen zwischen 0-9)
    • IP-Adresse ist Registriert
  • 04. Aug 2016 10:16 Antwort zu

    • 5p1k3
    • Top 200 Mitwirkender
    • Registriert am 03. Aug 2016
    • Beiträge 8
    • Punkte 85

    Nur Eingaben nach einem bestimmten Muster in Textbox zulassen

    Antworten
    Hallo,

    habs jetzt wie folgt gelöst bekommen:

    Xaml:

    <TextBox PreviewTextInput="TB_PreviewTextInput">...<div>


    CS:

    [code]
      //Only allow entries of the patter ####-(###)# 
            private void TB_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
            {
                e.Handled = !IsTextAllowed(e.Text, (sender as TextBox).Text);
            }

            // pattern
            private static bool IsTextAllowed(string input, string text)
            {
                Regex regex = new Regex("[^0-9]"); //regex 0-9
                Regex regex2 = new Regex("[^-]"); //regex "-"
                if ((text.Length >= 0 && text.Length <= 3) || (text.Length >= 5 && text.Length <= 8))
                {
                    if (!regex.IsMatch(input))
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }

                if (text.Length >= 4)
                {
                    if (!regex2.IsMatch(input))
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }

                return false;

            }
    [/code]

    Gruß

    5p1k3

    P.S.: Gibt es hier keine Beitragsvorschau?

    • IP-Adresse ist Registriert
Seite 1 von 1 (6 Treffer)

Regeln | Impressum