正規表現で使用されているパターンについて混乱しています。私が望むのは、10進数の前に、ユーザーが入力したい桁の最大数が3であり、数字がゼロで始まらないことです。小数点の前の数字を入力した後、3 桁または 2 桁または 1 桁にすることができますが、ゼロで始めることはできません。ユーザーが小数点以下 1 桁を入力できるようにしたいのですが、それは 1 桁までにする必要があります。では、これらはどのようなパターンになるのでしょうか。
例:
番号 入力可能: 1.3、22.3、333.4、999.6
番号 入力不可: 0、0.1、.1、4444.67、333.78
使用したコード
tempEditText.setFilters(new InputFilter[]{new DecimalDigitsInputFilter(3,1)});
class DecimalDigitsInputFilter implements InputFilter
{
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero)
{
mPattern = Pattern.compile("[0-9]{0," + (digitsBeforeZero - 1) + "}+((\\.[0-9]{0," + (digitsAfterZero - 1) + "})?)");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
{
Matcher matcher = mPattern.matcher(dest);
if(!matcher.matches())
{
return "";
}
return null;
}
}