2016-08-02 22 views
0

Also arbeite ich mit Java Regexp und ich habe ein bisschen Probleme, eine zu erstellen. Ich muss eine regexp, die Zahlen zwischen 0.0 und 359.9 mit immer genau einer Dezimalstelle, die nicht sehr kompliziert ist, aber ich mache eine Regexp für ein Textfeld, was bedeutet, dass, wenn der Ausdruck passt nicht immer Charakter, ich kann Tippe nicht weiter.Java Regexp für Textfield-Matching

Was es bedeutet ist, dass im Grunde 3 35 359 359. 359.9 müssen alle mir für die Eingabe in das Feld übereinstimmen.

Ich habe Sachen mit \d(\.\d)? versucht, aber das passt nicht jeden Schritt des Weges und \d(\.)?(\d)? ermöglicht es, mit einer Null zu beginnen. Ich kann nicht wirklich weiter mit dem, was ich über Regexp weiß, und ich würde jede Hilfe zu schätzen wissen.

Antwort

0

Versuchen:

^(?:3[0-5]\d|[12]\d{2}|\d{1,2})(?:\.\d?)?$ 

Demo: https://regex101.com/r/mW0lI5/3

+0

Dieser den Ausdruck mit einer 0 beginnen können, aber es ist gut genug für das, was ich tue, danke! –

+0

Ich tat dies absichtlich unter der Annahme, dass dies akzeptabel sein sollte. Dies kann jedoch leicht behoben werden, indem der '[0-2]' - Bereich zu '[12]' geändert wird. Änderte die Antwort. –

+0

'\ d {1,2}' wird immer noch mit 01.0 übereinstimmen. Und es mit "[1-9] \ d" zu ersetzen, funktioniert nicht. –

0

Versuchen Sie, diese Simpe regex.It arbeiten können, wie Sie dies erforderlich

^\d[0-5]?[0-9]?(\.)?([0-9])?$