Frage von T1Mde, 22

Java Regex?

Hallo, ich brauche eine Regex. Der String soll aus einer Zahl von 1-24 bestehen. Optional kann mit einem Punkt noch eine Zahl von 1-6 angehängt werden, also z.B. 9.3 oder 24.6

Mein Versuch

str.matches("^([0-9]|1[0-9]|2[0-4])(\\.[1-6])?$")

funktioniert leider nicht.

Kann mir jemand weiterhelfen?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Eismensch, 5

Du hast das sicherlich online in einem Regextester ausprobiert. Hier solltest du die Escape Zeichen beachten.

Deine Regex aus dem Code:

"^([0-9]|1[0-9]|2[0-4])(\\.[1-6])?$"

Diese ist korrekt, wenn du sie in deinem Code benutzt.


Für den online Test musst du dein Escape entfernen:
^([0-9]|1[0-9]|2[0-4])(.[1-6])?$



Dann klappt das auch mit dem online Tester ;)
Hier mal ein Beispiel. Achte darauf wie der Test deinen String interpretiert.

Antwort
von PWolff, 16

Sollte funktionieren (bis auf die Kleinigkeit, dass die 1. Zeichenklasse [1-9] lauten sollte).

Woran macht es sich bemerkbar, dass es nicht funktioniert?

Kommentar von T1Mde ,

Wenn ich aber bspw. "12." übergebe, kommt true zurück, bei "12.3" aber false...

Kommentar von T1Mde ,

Ich hab zum schnelleren Testen, den Regex in ner online JVM ausprobiert, hab's jetzt grad mal lokal gebuildet und ausprobiert und es funktioniert optimal :)

Danke übrigens für den Hinweis auf die 0 vorne. ^^

Keine passende Antwort gefunden?

Fragen Sie die Community