Ich muss den Wert meines Geburtsdatum Eingabefeldes überprüfen. Es sollte mehrere Möglichkeiten geben: dd.MM.yyyy
, dd.M.yyyy
, d.MM.yyyy
, d.m.yyyy
und auch dd.MM.yy
, dd.M.yy
, d.MM.yy
, d.m.yy
. Zum Beispiel können Sie 07.03.1993, 7.3.93 oder was auch immer eingeben.jsf - validate date mit Ausdruck Sprache
Die folgende Regex Beispiel wird überprüft nur die Formatprüfung, aber es funktioniert nicht, wenn das Datum existiert
(zB 2011.02.29 oder 47.02.2011 wird erlaubt sein) bearbeitenString s = (String) arg2;
String pattern = "^(\\d{2}|\\d{1})\\.(\\d{2}|\\d{1})\\.(\\d{2}|\\d{4})$";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println(("date correct"));
} else {
System.out.println("date incorrect");
}
Ich, der gerade erstellt folgende regex Anweisung, nun überprüft, ob der Monat größer als 12 ist und der Tag ist größer als 31. ich glaube, ich Regex zuerst verwenden sollte, und dann das Datum bestätige mit SimpleDateFormat
String s = "^((0?[1-9]|[12][0-9]|3[01])\\.(0?[1-9]|1[012])\\.((19|20)\\d{2})$";
Die Analyse-Methode ermöglicht ein 29.02-Datum für ein Nicht-Schaltjahr – Simeon
'SimpleDateFormat.parse' führt keine Validierung durch. Z.B. Wenn Sie das tun \t \t 'Datum d = neu SimpleDateFormat (" yyyy-MM-dd "). parse (" 2012-01-32 ");', dann bezieht sich das Datum d auf den 1. Februar: st, weil die Tage " Überlauf "in den Monat. – Alderath
Das ist nicht wahr Alderath, verwenden Sie 'setLenient (false)', dann gibt Ihr Datum eine Ausnahme –