Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hast du ein Beispiel wie ich das machen könnte. Etwas Code würde mir viel mehr weiterhelfen!
Vielleicht gibts da auch noch andere Möglichkeiten ???
Danke
In dem von mir geposteten Link geht es doch darum wie eine regular expression aufgestellt wird um einem Datum in der Form yyyy-mm-dd von 1900-01-01 bis 2099-12-31 zu beschreiben. Sogar mit Erklärung. welcher Teil der regex wozu da ist.
Du willst wissen ob TT.MM.JJJJ ein valides Datum ist. Jetzt musst du dich entscheiden ob du obskure daten erlaubst oder nicht. Also z.b. ist der 45 Tag des 15 Monats erlaubt? Ja oder Nein. Der Calendar frist das und setzt es in ein Datum um. So wird aus dem 13 Monat eben Januar. Ich persönlich erlaube solche Daten nicht da kein Mensch sowas genau umrechnet.
Willst du keine Beschränkungen ist eine regex der Form
/d/d[.]/d/d[.]/d/d/d/d
vollkommen ausreichend. Hier wird nur geschaut ob die Eingegebenen Werte dezimale Zahlen sind und von einem Punkt separiert werden. Nix dolles aber es tut.
Witziger wird es wenn du dem Nutzer Beschränkungen auf vernünftige daten auferlegen willst. Gibts es nur besimmte Jahrhunderte die valide sind? Für eine Kalkulationssoftware reicht sicher von 1800-2100. Für eine Ahnentafel reicht es nicht. Das muss man wissen.
/d/d/d/d
wir beschneiden also das Jahr nicht. alles von 0000 bis 9999 ist ein valides Jahr. Kommen wir zum Monat. Alle Monate haben maximal 31 Tage. Also werden nur Zahlen von 1 bis 31 als valider Monat erkannt.
(0[1-9]|[12][0-9]|3[01])
Was macht diese regex? die erste die 0 vorne ist erlaubt mit einer folgenden 1 oder 2 etc bis 9. Die 1 oder 2 vorne ist erlaubt mit einer folgenden 0-9 und die 3 ist nur mit einer folgenden 0 oder 1 erlaubt. Kommen wir zum Monat. Monate hats immer 12, fix. Naja mir ist kein Jahr mit mehr oder weniger Monaten bekannt.
(0[1-9]|1[012])
Same as above, die 0 ist erlaubt mit einer 1-9 zusammen also z.b. 07 03 etc. Die 1 ist erlaubt mit einer 0 1 und 2. Also 10 11 und 12. Fügen wir alle 3 zusammen...
Das wars. So schwer sind regular expressions nicht. Einziger Wermutstropfen ist, das auch der 31 Februar ein valides Datum ist. Aber damit, denke ich, kann man leben.
Im Programm sieht das dann so aus
Code:
private static final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d";
public boolean isDate(String s)
{
return s.matches(REGEX_DATE);
}
<übertreibung>Ja, klar, dann legt jemand die wichtige jährliche Wartung eines Atomreaktors aus versehen auf diese Datum. Ist ja nicht schlimm wenn die mal vergessen wird. :wink: </übertreibung>
<übertreibung>Ja, klar, dann legt jemand die wichtige jährliche Wartung eines Atomreaktors aus versehen auf diese Datum. Ist ja nicht schlimm wenn die mal vergessen wird. :wink: </übertreibung>
@Isaac *klugscheiß*
Das kommt aber vom Typcast, da wird Infinity in int gecastet.
-> 1/0 gibt ArithmeticException
1.f/0.f gibt Infinity
(int)(1.f/0.f) gibt Integer.MAX_VALUE :wink:
ich habe mal den anstaz genommen. doch kommt bei einem string wie: '09.03.2004' unter
Code:
final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d";
System.out.println(temp_StartDateFromHeader.matches(REGEX_DATE));
immer 'false' heraus, obwohl das format ja stimmen müsste.
kann hier noch mal jemand helfen?
gondor(..)
Isaac hat gesagt.:
Du willst wissen ob TT.MM.JJJJ ein valides Datum ist. Jetzt musst du dich entscheiden ob du obskure daten erlaubst oder nicht. Also z.b. ist der 45 Tag des 15 Monats erlaubt? Ja oder Nein. Der Calendar frist das und setzt es in ein Datum um. So wird aus dem 13 Monat eben Januar. Ich persönlich erlaube solche Daten nicht da kein Mensch sowas genau umrechnet.
Willst du keine Beschränkungen ist eine regex der Form
/d/d[.]/d/d[.]/d/d/d/d
vollkommen ausreichend. Hier wird nur geschaut ob die Eingegebenen Werte dezimale Zahlen sind und von einem Punkt separiert werden. Nix dolles aber es tut.
Witziger wird es wenn du dem Nutzer Beschränkungen auf vernünftige daten auferlegen willst. Gibts es nur besimmte Jahrhunderte die valide sind? Für eine Kalkulationssoftware reicht sicher von 1800-2100. Für eine Ahnentafel reicht es nicht. Das muss man wissen.
/d/d/d/d
wir beschneiden also das Jahr nicht. alles von 0000 bis 9999 ist ein valides Jahr. Kommen wir zum Monat. Alle Monate haben maximal 31 Tage. Also werden nur Zahlen von 1 bis 31 als valider Monat erkannt.
(0[1-9]|[12][0-9]|3[01])
Was macht diese regex? die erste die 0 vorne ist erlaubt mit einer folgenden 1 oder 2 etc bis 9. Die 1 oder 2 vorne ist erlaubt mit einer folgenden 0-9 und die 3 ist nur mit einer folgenden 0 oder 1 erlaubt. Kommen wir zum Monat. Monate hats immer 12, fix. Naja mir ist kein Jahr mit mehr oder weniger Monaten bekannt.
(0[1-9]|1[012])
Same as above, die 0 ist erlaubt mit einer 1-9 zusammen also z.b. 07 03 etc. Die 1 ist erlaubt mit einer 0 1 und 2. Also 10 11 und 12. Fügen wir alle 3 zusammen...
Das wars. So schwer sind regular expressions nicht. Einziger Wermutstropfen ist, das auch der 31 Februar ein valides Datum ist. Aber damit, denke ich, kann man leben.
Im Programm sieht das dann so aus
Code:
private static final String REGEX_DATE = "(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.]/d/d/d/d";
public boolean isDate(String s)
{
return s.matches(REGEX_DATE);
}