format の数値入力を制限するための入力フィルターを実装する必要があります1234.35
。つまり、前は最大 4.
桁、小数点以下は 2 桁です。私はこの正規表現パターンを使用しています:
Pattern.compile("[0-9]{0,4}+((\\.[0-9]{0,2})?)||(\\.)?");
これは機能しますが、編集テキストに数値を入力して小数点以下の桁数を編集しようとすると、編集できません。私はそれらを削除することしかできません。
なにが問題ですか?
あなたが言ったことに基づいて、あなたがやろうとしているように見えると思いますが、私はこの正規表現を使用します:
^(\d{0,4})(\.\d{1,2})?$
これは、「小数点と 2 つの数字」が続くかどうかに関係なく、「0 ~ 4 桁」に一致します。小数点がある場合は、1 桁または 2 桁のいずれかがそれに続く必要があります。たとえば5
、1234
、1234.56
、.2
、.31
はすべて有効で、式と一致しますが.123
、1234.
、1234.567
、12345
、.
は一致しません。
または、数値の末尾が 10 進数 ( .
、1234.
など) になるようにするには、次の変更を使用します。
^(\d{0,4})(\.(\d{1,2})?)?$