На самом деле, я не смущен шаблоном, используемым в моем регулярном выражении. Фактически, я хочу, чтобы до десятичного значения максимальное число цифр, которое пользователь хочет ввести, равно трем, а цифра не должна начинаться с нуля. После ввода цифры до десятичной точки, которая может быть трехзначной или двухзначной или одной цифры, но не может начинаться с нуля. Я хочу разрешить пользователю вводить одну цифру после десятичной точки, и она должна быть не более одной. Итак, какова будет картина для них.Регулярное выражение не работает должным образом в соответствии с требованием
Пример:
Число Разрешить ввести: 1,3, 22,3, 333.4,999.6
Количество Не разрешено вводить: 0, 0,1, 0,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;
}
}
Что d here.Can u Пожалуйста отредактирован это в моем коде. Фактически m застрял в нем с часом. – AndroidDev
Вы должны группировать точку и последнюю цифру вместе, в противном случае она позволяет «1.» – stema
@Anshuman - '\ d' - это то же самое, что' [0-9] '. Это означает «любой символ цифры». Вам нужно будет удвоить символы '\' в шаблоне, чтобы сделать его строкой Java: '^^[1-9] \\ d {0,2} \\. \\ d? $" ' –