Ala*_*lan 2 java regex android android-edittext
我正在尝试为我创建一个正则表达式,EditText以仅允许美元格式的输入。但是它不起作用。
public class DecimalInputFilter implements InputFilter {
Pattern mPattern;
public DecimalInputFilter() {
mPattern=Pattern.compile("^[0-9]+([.][0-9]{2})?$");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Matcher matcher=mPattern.matcher(dest);
if(!matcher.matches())
return "";
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
正则表达式的思维过程 -
当我尝试应用此功能时,它不允许我输入任何数字。我缺少什么?
小智 5
使用下一个过滤函数:
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source.equals("")) return null; // Para el backspace
StringBuilder builder = new StringBuilder(dest);
builder.replace(dstart, dend, source.subSequence(start, end).toString());
Matcher matcher=mPattern.matcher(builder);
if(!matcher.matches())
return "";
return null;
}
Run Code Online (Sandbox Code Playgroud)
因为如果您在构建器上匹配,它会让您知道最终字符串是否与建议的表达式匹配,否则它返回空字符串。