• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

eregi - nur Ziffern und -

Tobi44

Mitglied
Hi,

habe mir gerade versucht, ein Tutorial für reguläre Ausdrücke, also sowas für eregi und preg match reinzuziehen. Nach der zweiten Seite habe ich es aufgegeben.

Wie mache ich, dass er nur nach Ziffern/Zahlen und Bindestrichen sowie Leerzeichen sucht? Brauche das für eine Überprüfung, man soll also bspw. 1-66 oder 123456 oder 1 - 123 eingeben können.

Danke & Gruß
 
Werbung:
Ich habe es nun so gemacht: preg_match('[0-9 \-]', $meine_bloede_scheisse_hier)

Aber geht weder auch nur eine einzige Ziffer, noch nen Bindestrich oder sonst irgendwas. Gar nix geht.
 
Werbung:
Wenn Du

PHP:
preg_match('[0-9\-]', $dein_string);

also ohne das Leerzeichen schreiben würdest, sollte es eigentlich klappen. Funktioniert mit dem o.g. Testtool einwandfrei und liefert ein Array der gefundenen Zahlen zurück.
 
Komisch. In dem Tutorial stehts aber auch mit Leerzeichen, und als Erklärung steht bei, dass das auch als Leerzeichen gilt.

Dennoch funzt es bei mir nicht, auch nicht ohne Leerzeichen.
 
Zeig bitte mal komplett testbaren Code, der das Problem demonstriert.

Wie sieht eine Eingabe aus? Wie sieht das Pattern aus? Welche Ausgabe erwartest du?

Ansonsten: Die hier geposteten Ausdrücke haben keine „normalen“ Delimiter. Klammern gehen zwar auch, aber ich weiß nicht, ob das das ist, was gesucht ist.

- PHP: Delimiters - Manual
 
Werbung:
Hallo,

ich möchte das so machen:

PHP:
...}elseif(!empty($mist) AND (strlen($mist) > 8 OR !preg_match('[0-9]', $mist))) {
		$form_ausgabe .= '<font color="red">Dieser Blödsinn hier funzt nicht weil ich mit diesem blöden preg match immer diese blöde Meldung kriege!</font>'; }else { ok..
 
Klappt auch nicht. Warum hast Du da jetzt keinen \ vor das - gemacht? Ich dachte, das muss man machen.

Edit: Klappt insofern, dass nur eine Ziffer erlaubt ist. Warum nicht mehrere?
 
Werbung:
Oh, richtig. Sorry. :)

Das Minus-Zeichen brauchst du nur zu escapen, wenn es zwischen zwei Zeichen der Zeichenklasse steht. Dann bedeutet es eben „bis“. Wenn es ganz hinten steht (oder glaube ich auch ganz vorne), kann der Parser entscheiden, dass es an der Stelle kein „bis“ sein kann. Escapen ist aber dennoch natürlich nicht falsch, nur eben nicht notwendig.
 
Zurück
Oben