Mein regulärer Ausdruck macht nicht was ich will!
Flori
- php
1 ChrisB0 Matti Mäkitalo0 Der Martin1 MudGuard
Hi,
das php-script
<?php
$wert = "0123457-345455444";
if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))
echo "Fehler";
else
echo "OK";
?>
sollte nach meiner Meinung folgendes erlauben:
0123456789
012-3456789
0123-456789
01234-56789
aber nicht:
012345-6789
und erst recht nicht
0123456-789
Es akzeptiert aber auch den obigen Wert 0123457-345455444
Wo liegt mein Denkfehler?
Gruß
Flori
Hi,
if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))
sollte nach meiner Meinung folgendes erlauben: [...]
aber nicht:
012345-6789
Beginnt mit 2 Ziffern, gefolgt von keinem -, gefolgt von 3 Ziffern – passt.
und erst recht nicht
0123456-789
Beginnt mit 2 Ziffern, gefolgt von keinem -, gefolgt von 3 Ziffern – passt.
Es akzeptiert aber auch den obigen Wert 0123457-345455444
Wo liegt mein Denkfehler?
Keine Ahnung – du hast und ja nicht beschrieben, was du dir bei dem Ausdruck gedacht hast.
MfG ChrisB
Hi,
<?php
$wert = "0123457-345455444";
if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))
echo "Fehler";
else
echo "OK";
?>
> sollte nach meiner Meinung folgendes erlauben:
> [...]
> aber nicht:
> 012345-6789
> Wo liegt mein Denkfehler?
Du hast den Regex nur vorne veranktert, nicht hinten.
Bis die Tage,
Matti
--
[Webapplikationen in C++ entwickeln](http://tntnet.org/)
Hallo,
if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))
Es akzeptiert aber auch den obigen Wert 0123457-345455444
warum auch nicht?
Der Wert beginnt mit der Ziffer 0,
dann folgen zwei bis vier Ziffern (nämlich 12 oder 123),
dann folgt ein optionales Minuszeichen, das in diesem Fall nicht da ist,
und dann weitere drei oder mehr Ziffern (nämlich 3457 oder 457).
Passt. :-)
Wo liegt mein Denkfehler?
Kann ich nicht genau sagen, da ich die Anforderung nicht kenne.
Ciao,
Martin
Hi,
$wert = "0123457-345455444";
if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))
echo "Fehler";
else
echo "OK";
?>
[/code]
sollte nach meiner Meinung folgendes erlauben:
0123456789
012-3456789
0123-456789
01234-56789
aber nicht:
012345-6789
und erst recht nicht
0123456-789
Es akzeptiert aber auch den obigen Wert 0123457-345455444
Das liegt daran, daß die Regex-Engine sich nicht nach Deiner Meinung richtet, sondern nach dem gegebenen Regex - und der erlaubt nunmal die gegebenen Werte - wie, das wurde ja bereits gesagt.
Wo liegt mein Denkfehler?
Am Ende. ;-)
Am fehlenden Geld ($).
Wenn der Ausdruck das machen soll, was ich vermute, ist er aber auch inhaltlich falsch - es gibt auch Telephon-Vorwahlen in Deutschland mit mehr als 4 Ziffern nach der 0 (z.B. Abberode 034779)
cu,
Andreas