Я ищу некоторую помощь, чтобы получить регулярное выражение для Android, которое предотвращает больше одного ведущего нуля в заданном десятичном числе. В настоящее время любое количество нулей может быть добавлено до фактической цифры. Я ищу поддержку чисел вроде 0.1, 11.04, 0129. Числа, которые не должны быть разрешены в +0,9, 0009999,33, 0007Regex/Input Filter для android для предотвращения более чем одного ведущего нуля
Существующий класс фильтра, приводится ниже:
public class DecimalDigitsInputFilter implements InputFilter{
Pattern mPattern;
int maxDigitsBeforeDecimalPoint = 10;
int maxDigitsAfterDecimalPoint = 2;
public DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero)
{
this.maxDigitsBeforeDecimalPoint = digitsBeforeZero;
this.maxDigitsAfterDecimalPoint = digitsAfterZero;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,
int dend)
{
StringBuilder builder = new StringBuilder(dest);
builder.replace(dstart, dend, source.subSequence(start, end).toString());
if(!builder.toString().matches(
"(([0-9]{1})([0-9]{0," + (maxDigitsBeforeDecimalPoint - 1) + "})?)?(\\.[0-9]{0,"
+ maxDigitsAfterDecimalPoint + "})?"))
{
if(source.length() == 0)
return dest.subSequence(dstart, dend);
return "";
}
return null;
}}
Заранее спасибо.
что-то вроде этого '^ \\ .. * |^[0] {2} *'.? – SomeJavaGuy
см. [Здесь] (http://pastebin.com/WchkxhgD) – pskink