У меня есть numberDecimal EditText
, который я хочу проверить с помощью регулярного выражения. При проверке я хочу.
-
До десятичной точки максимальная цифра, которую я хочу ввести, равна трем, и цифра не должна начинаться с нуля, как 2,23,342 и т.д.
-
После десятичной точки максимальная цифра, которую я хочу ввести, равна 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(); // dont know what to place
}
}
});