Problem mit RexExp

Gray

Erfahrenes Mitglied
Ich habe folgenden Code

PHP:
if((!(ereg("([0-9]{1,2})-([0-9]{4})",$gueltigkeit)))){ echo "<br>Die gültigkeit hat ein ungültiges Format.";}

allerdings wenn ich z.B. 6543653-345345 eingebe nimmt er es auch an, nur wenn ich das Feld leer lasse oder nur Buchstaben eingebe, zeigt es die Meldung an.
Es soll aber nur dan klappen wenn man z.B. 10-2004 eingibt.
 
Zuletzt bearbeitet:
Versuch mal das:

if(!preg_match("/^([0-9]+)$/", $gueltigkeit))
echo "<br>Die gültigkeit hat ein ungültiges Format.";
 
klappt leider nicht, da kommt dan immer die Fehlermeldung, auch wenn man es richtig eingibt.
 
Du könntest folgendes versuchen:
PHP:
<?php
	$string = '10-2004';
	$datum = array();

	sscanf($string, '%2d-%4d', $datum['monat'], $datum['jahr']);
	if( !checkdate($datum['monat'], 1, $datum['jahr']) ) {
		echo 'Eingabe ung&uuml;ltig!';
	}
?>
 
Zuletzt bearbeitet:
Super, das ist fast perfekt, das einzige was jetzt noch stört, man kann auch 10-200456 eingeben, aber das Jahr sollte schon auf 4 stellen begrenzt sein und soll auch nicht weniger haben können.
 
Zuletzt bearbeitet:
Sorry, da hatte ich Dich falsch verstanden.
Wenn die Angabe immer das Format "10-2004" hat, also 7 Zeichen lang ist, kannst Du doch das <input> (Du nutzt doch so eins?) auf maxlength="7" setzen und dann zusätzlich in PHP prüfen, ob strlen($gueltigkeit == 7)

redlama
 
Dann füge doch einfach die beiden Elemente wieder zusammen:
PHP:
<?php
	$string = '9-200456';
	$datum = array();

	sscanf($string, '%2d-%4d', $datum['monat'], $datum['jahr']);
	if( !checkdate($datum['monat'], 1, $datum['jahr']) ) {
		echo 'Eingabe ung&uuml;ltig!';
	}
	echo printf('%02d-%4d', $datum['monat'], $datum['jahr']);
?>
 
Also Zusammenfügen bringt mir nichts, es soll lediglich wenn die Jahreszahl kürzer oder länger als 4 Zeichen ist, auch die Fehlermeldung anzeigen, aber das tut es nicht.
 
Ok, in dem Fall würde folgendes ausreichen:
PHP:
<?php
	$string = '9-200456';
	$datum = array();

	sscanf($string, '%d-%d', $datum['monat'], $datum['jahr']);
	if( !checkdate($datum['monat'], 1, $datum['jahr']) ) {
		echo 'Eingabe ung&uuml;ltig!';
	}
?>
 
Zurück