正規表現で使用されているパターンについて混乱しています。私が望むのは、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;
}
}