CKroencke Geschrieben 4. November 2011 Geschrieben 4. November 2011 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! Zitieren
steinadler Geschrieben 4. November 2011 Geschrieben 4. November 2011 Nimm doch den Punkt aus den Regex raus und prüfe direkt den KeyCode aus den EventArgs. Zitieren
trollr Geschrieben 4. November 2011 Geschrieben 4. November 2011 Nimm eine MaskedTextBox und setze TextMaskFormat auf ExcludePromptsAndLiterals. Dann musst du nur schauen das die Werte nicht > 255 sind Zitieren
Dragon8 Geschrieben 4. November 2011 Geschrieben 4. November 2011 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. Zitieren
lilith2k3 Geschrieben 4. November 2011 Geschrieben 4. November 2011 (bearbeitet) Schonmal auf die dumme Idee gekommen: Parse-Methode zu benutzen? Wegen des RAs würde ich an Deiner Stelle besser nochmal googlen. Bearbeitet 4. November 2011 von lilith2k3 Zitieren
CKroencke Geschrieben 8. November 2011 Autor Geschrieben 8. November 2011 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 . 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!! Zitieren
Sacaldur Geschrieben 11. November 2011 Geschrieben 11. November 2011 @ 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 Zitieren
HuDeanY Geschrieben 9. Januar 2012 Geschrieben 9. Januar 2012 (bearbeitet) 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 9. Januar 2012 von HuDeanY Zitieren
Empfohlene Beiträge
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.