Hülfe ich komm nicht klar
Ich habe in einer jsp ein Eingabefeld. Der hier eingegebene String muss immer im Format "XXXX00" vorliegen - wobei X ein Buchstabe und 0 eine Zahl ist. (also erst 4 Buchstaben, dann 2 Zahlen.)
Zur Validierung des ganzen wollte ich die matches-Methode der String-Klasse nutzen.
Hierbei zerlege ich den String erstmal mittels Substring in zwei Teile was auch super funktioniert, allerdings bekomm ich die Angabe der "Regular Expression" nicht auf die Reihe.
Nutzen wollte ich:
[a-zA-Z] - a through z or A through Z, inclusive (range)
und
\d - A digit: [0-9]
gemäß
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html#sum
hier mal die komplette Methode (die eine Fehlermeldung ausgeben soll, bei ungültiger Eingabe):
protected ActionErrors validateSixLetterField (String fieldName, String value, boolean checkNull, String format, int length, DomainValue.Factory factory, ActionErrors errors)
//Hier wird eigentlich noch eine andere Methode aufgerufen, deswegen die ganzen Übergabeparameter oben!
//Hier die Fehlehafte Stelle:
{
if(value != null && !value.substring(0,4).matches("[a-zA-Z]") || !value.substring(4,6).matches("\\d"))
{
errors.add("",new ActionMessage("error.invalidSixLetter", fieldName, value));
}
return errors;
}
Als Ergebnis bekomme ich jedesmal die von mir generierte Fehlermeldung, auch wenn die Eingabe eigentlich passen sollte. Habs auch einzeln getestet, weder .matches("[a-zA-Z]") noch .matches("\\d") funktioniert.
Nur "\d" gibt übrigens sofort nen Compilerfehler!
Hat irgendjemand ne Ahnung, wie die Expressions da zu nutzen sind?