Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Commy!

ich arbeite gerade an einem C# programm. Ich bin anfänger und ein Regex Command funktioniert nicht so, wie er sollte.

Ich habe ein Textfeld, in dem man eine IP-Adresse eintragen soll. Das Feld will ich aber nur auf Zahlen und "." (ohne ") beschränken. Folgendes ist bist jetzt mein Code:

private void ipTxtBox_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

        {

            Regex objNotNumberPattern = new Regex("[0-9]");


            if (objNotNumberPattern.IsMatch(e.KeyCode.ToString()) || Char.IsControl((char)e.KeyCode))

            {

                e.SuppressKeyPress = false;

            }

            else

            {

                e.SuppressKeyPress = true;

            }


        }
Die Zahlen funktionieren. Laut freund google gibt es das Zeichen "." auch als Metabedeutung. Daraufhin habe ich folgendes geändert:
Regex objNotNumberPattern = new Regex("([0-9]\\.)");
Leider funktioniert jetzt gar nix mehr. Ich habe ein PDF Tutorial gelesen welches vieles sehr gut erläutert. Es kommt auch ein fehler, wenn ich nur
Regex objNotNumberPattern = new Regex("([0-9]\.)");

(ein backslash)

Benutze:

Nicht erkannte Escapesequenz

Bitte um hilfe!

Nimm eine MaskedTextBox und setze TextMaskFormat auf ExcludePromptsAndLiterals. Dann musst du nur schauen das die Werte nicht > 255 sind

Dein RegExp ist für die Aufgabe nicht richtig. Dies sagt nämlich aus, dass es nach einer Zahl und einem darauffolgenden Punkt suchen soll. Wenn du aber nur ein einzelnes Zeichen gegen dieses RegExp prüfst, kann er niemals wahr ergeben.

Funktionieren sollte folgender RegExp

[0-9\\.]

Die schließt den Punkt in die Auswahl der Elemente mit ein, damit entsprechend wird aus dem Zahl UND Punkt ein Zahl ODER Punkt.

Daraus kannst du dann aber natürlich noch immer nicht schließen, ob die IP Adresse im ganzen syntaktisch richtig ist. Und wenn jemand eine IPv6 Adresse eingeben möchte, kommt er bei dem Textfeld auch nicht sehr weit.

  • Autor

Sooo! Tut mir leid wir haben gerade in der Firma sehr sehr viel zu tun.

Erstmal vielen vielen Dank für die Antworten.

IPv6 fällt erstmal weg, da ich davon sowieso noch keine Ahnung habe :D.

Auf die "dumme" Idee bin ich noch nicht gekommen, da ich sowas überhaupt noch gar nicht kenne! Wie gesagt: anfänger was C# angeht.

Die MaskedTextBox werde ich mir mal angucken.

@ Dragon8:

Das funktioniert - naja sagen wir so - halbwegs^^ Er macht keine Punkte, aber andere sonderzeichen (!"§$%&/()=?^).

Ich melde mich wenn ich wieder bisschen mehr Zeit habe. Danke erstmal für alle Antworten!!

@ Dragon8:

Das funktioniert - naja sagen wir so - halbwegs^^ Er macht keine Punkte, aber andere sonderzeichen (!"§$%&/()=?^).

das liegt daran, weil der Ausdruck an sich nur

^[0-9\.]*$
lauten müsste ansonsten würden andere Zeichen nicht ausgeschlossen werden beim Einbauen in den Code musst du darauf achten, dass das \ bei Zeichenketten als Escapezeichen dient deswegen muss du im Code
@"^[0-9\.]*$"
oder
"^[0-9\\.]*$"

schreiben

  • 1 Monat später...

Du könntest auch den gesamten Inhalt der Textbox nach jeder Eingabe gegen folgende RegExp prüfen:

"^([0-9]{1,3}\\.){0,3}([0-9]{0,3})$"
Das beinhaltet dann, daß dein User fortlaufen auf eine korrekte IP-Adresse hinarbeitet bei der Eingabe. Bevor du das Endergebnis dann als IP verwendest, solltest du dieses dann nochmal gegen folgende RegExp prüfen:
"^([0-9]{1,3}\\.){3}([0-9]{1,3}){1}$"

Bearbeitet von HuDeanY

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.