Zum Inhalt springen

C# Regex - Zahlen und "." Zeichen


CKroencke

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ 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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 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
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...