Jörk Behrends: Reguläre Ausdrücke in Variabeln

Beitrag lesen

Hallo Ihr zwei!

*Argh*

versuch's mit
... =~ /^(($FORM{'day'}\d\d)/...
Mein Gott, da hätte ich aber selbst drauf kommen können. Ist ja auch so in SelfHTML beschrieben!!! (mußte ich jetzt nicht mal überprüfen). Ich habs gelesen und gelesen und... aber nicht registriert, daß es meine Lösung ist.

[buzzzz] sieht ja sehr noach Zonk aus ;-)

Ich muß hier mal intervenieren. Das oben angegebene Statement für dummerweise nicht zum
gewünschten Erfolg:
angenommen ich übergebe in day eine 19: dann soll der Ausdruck auch nur mit 19/xx/yy matchen. In der obigen RE steht aber: "wenn die 19 nicht paßt, dann nimm wenigsten zwei Ziffern". Das ist ja sicherlich nicht gewünscht ...

Nehmt doch mal
... =~ /^($FORM{'day'}\b/?$FORM{'month'}\b/?$FORM{'year'})$/

Die / sind jetzt optional (durch ?). Werden also Tag UND Monat weggelassen, so wird aus
//1999 durch weglassen eines oder beider / ein passender Ausdruck.
Aber! Es ist wohl falsch, wenn alle / weggelassen werden können. Daher das zusätliche \b, welches mir Wortgrenzen zwischen den Zahlen erzwingt. Heißt soviel wie "Wenn Jahr und Monat, dann auch mit / dazwischen". Am Ende noch ein $, so daß bei weglassen von Tag und Monat das Jahr auch nur am Ende von TimeDate stehen kann.

Jörk

PS: Die Variante mit dem if-then-else war im Ansatz gar nicht so falsch. Jedoch wurde durch
$parmonth = "\d\d";
der text "dd" in $parmonth abgelegt :( Richtig wäre dann
$parmonth = "\d\d";
gewesen ... probiers doch mal