Как использовать регулярное выражение в Android

У меня есть числоDecimal EditText, которое я хочу проверить с помощью регулярного выражения. При проверке я хочу:

  1. Перед десятичной точкой максимальная цифра, которую я хочу ввести, равна трем, и цифра не должна начинаться с нуля, например 2,23,342и т. д.

  2. После десятичной точки максимальная цифра I .1, .3, .6и т. д.

Таким образом, число, которое я разрешаю пользователю вводить, похоже на 2.1, 32.5, 444.8, 564.9. и т. д.

Но в моем коде происходит следующее::

  1. Он позволяет пользователю вводить более чем трехзначное число перед десятичной точкой, например 3456, 4444, 5555, и после этого он не не позволяйте мне вводить десятичную точку после этого.

  2. Это позволяет мне вводить 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                   
        }
    }
});
22
задан 0xCursor 8 August 2018 в 20:05
поделиться