【发布时间】:2016-01-18 16:59:07
【问题描述】:
我正在寻找一些帮助来获得适用于 Android 的正则表达式,以防止给定十进制数中出现多个前导零。目前,可以在实际数字之前添加任意数量的零。我正在寻找像 0.1, 11.04, 0129 这样的数字的支持。不应允许的数字是 .9, 0009999.33, 0007
现有的过滤器类,如下:
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,}.*? -
见here
标签: java android regex android-input-filter input-filter