4 Stimmen

Hilfe zu regulären Ausdrücken für InputFilter für EditText in Android

Ich muss einen Eingabefilter zur Begrenzung der Zahleneingabe im Format 1234.35 . Das heißt, maximal vier vor . und zwei Dezimalstellen. Ich verwende dies regulärer Ausdruck Muster:

Pattern.compile("[0-9]{0,4}+((\\.[0-9]{0,2})?)||(\\.)?");

Das funktioniert, aber sobald ich eine Zahl in den Bearbeitungstext eingebe und versuche, die Werte vor den Dezimalstellen zu bearbeiten, kann ich sie nicht mehr ändern. Ich kann sie nur löschen.

Was ist los?

2voto

Code Jockey Punkte 6448

Basierend auf dem, was Sie gesagt haben und ich denke, es sieht so aus, als ob Sie es versuchen würden, würde ich diesen regulären Ausdruck verwenden:

^(\d{0,4})(\.\d{1,2})?$

Es passt zu "0-4 Ziffern" mit oder ohne "einem Dezimalpunkt und zwei nachfolgenden Zahlen". Wenn ein Dezimalpunkt vorhanden ist, müssen entweder eine oder zwei Ziffern folgen. Zum Beispiel: 5 , 1234 , 1234.56 , .2 y .31 sind alle gültig und werden von dem Ausdruck erfüllt, aber .123 , 1234. , 1234.567 , 12345 y . werden NICHT abgeglichen.

Alternativ können Sie auch Zahlen mit Dezimalstellen zulassen (wie . , 1234. und dergleichen), verwenden Sie diese Änderung:

^(\d{0,4})(\.(\d{1,2})?)?$

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X