У меня есть числоDecimal EditText
, которое я хочу проверить с помощью регулярного выражения. При проверке я хочу:
Перед десятичной точкой максимальная цифра, которую я хочу ввести, равна трем, и цифра не должна начинаться с нуля, например 2,23,342
и т. д.
После десятичной точки максимальная цифра I .1
, .3
, .6
и т. д.
Таким образом, число, которое я разрешаю пользователю вводить, похоже на 2.1
, 32.5
, 444.8
, 564.9
. и т. д.
Но в моем коде происходит следующее::
Он позволяет пользователю вводить более чем трехзначное число перед десятичной точкой, например 3456
, 4444
, 5555
, и после этого он не не позволяйте мне вводить десятичную точку после этого.
Это позволяет мне вводить 0
перед десятичной точкой в качестве начала цифры.
Так почему же это происходит, есть ли что-то неправильное в регулярном выражении, которое я использовал? Если кто-нибудь знает, пожалуйста, помогите мне решить эту проблему.
Код, который я использовал:
weightEditText.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s)
{
Pattern mPattern = Pattern.compile("^([1-9][0-9]{0,2})?(\\.[0-9]?)?$");
Matcher matcher = mPattern.matcher(s.toString());
if(!matcher.find())
{
weightEditText.setText(); // Don't know what to place
}
}
});