我对正则表达式中使用的模式感到困惑。我想要的是在十进制之前,用户想要输入的最大数字是三,并且数字不应该以零开头。输入小数点前的数字后,可以是三位或两位或一位,但不能以零开头。我希望允许用户在小数点后输入一位,并且不应超过一位。那么这些的模式是什么?
例子:
号码 允许输入:1.3
, 22.3
, 333.4
,999.6
Number 不允许输入: 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;
}
}