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;
    }
}
正则表达式的思维过程 -
当我尝试应用此功能时,它不允许我输入任何数字。我缺少什么?
小智 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;
}
因为如果您在构建器上匹配,它会让您知道最终字符串是否与建议的表达式匹配,否则它返回空字符串。
| 归档时间: | 
 | 
| 查看次数: | 8076 次 | 
| 最近记录: |