Я пытаюсь создать регулярное выражение, которое найдет только что-то подобное: 1; 12; 12,4; 12,45; 12,4; 12.45 (цифры могут быть разными).Десятичные числа Android TextWatcher
Это мое регулярное выражение регулярных выражений:??? ^[0-9] [0-9] [.] [0-9] [0-9] $, , но она проходит, например, , но я не хочу этого.
Я хочу создать EditText с TextWatcher, который будет фильтровать текст по регулярному выражению.
Мой код:
TextWatcher DiscountTextWatcher = new TextWatcher()
{
private final Pattern sPattern = Pattern.compile("^[0-9]?[0-9]?[,.]?[0-9]?[0-9]?$");
private CharSequence mText = "";
private boolean isValid(CharSequence s) {
return sPattern.matcher(s).matches();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after){
mText = isValid(s) ? s : mText;
}
@Override
public void afterTextChanged(Editable s)
{
if (!isValid(s) || s.length() > 4)
{
addDocumentDiscountValue.removeTextChangedListener(this);
addDocumentDiscountValue.setText(mText);
addDocumentDiscountValue.setSelection(mText.length());
addDocumentDiscountValue.addTextChangedListener(this);
}
}
};
EDIT:
Теперь у меня лучше регулярное выражение (спасибо @ nu11p01n73R), но она по-прежнему не работает. I не может написать двоеточие после двух чисел, не знаю почему. Это странно, но три номера подряд работает ...
Это было так просто! Спасибо, сэр. –
Неверно, если вы хотите избежать двойных нулей, таких как '00.23' –
'^(0 | [1-9] [0-9] {0,1}) ([.,] [0-9] {1,2 })? $ 'будет работать как замена –