簡體   English   中英

使用setTextValidation的EditTextby上的正則表達式模式無法正常工作

[英]Regex Patter on EditTextby using setTextValidationis not working properly

我在EditText上使用帶有正則表達式模式的setTextValidation,但它無法正常工作。 我只需要該字段的字母和空格,但是當我按下數字時,它會復制先前輸入的其他字母。

        ValidationUtil.setTextValidation(etClientMiddleName, "[a-zA-Z ]+", 50);

這是setTextValidation方法

 public static void setTextValidation(EditText mEdtField, final String mRegExp, int length) {
    try {
        InputFilter filter = new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                String data = source.toString().substring(start, end);
                String retData = null;
                boolean isValid = false;
                isValid = data.matches(mRegExp);
                if (!isValid) {
                    if (source instanceof SpannableStringBuilder) {
                        retData = data.replaceAll("[\\d]", "");
                    } else {
                        retData = "";
                    }
                }
                return retData;
            }
        };

        mEdtField.setFilters(new InputFilter[]{filter, new InputFilter.LengthFilter(length)});
    } catch (Exception e) {
        Log.e("Text Validation", "" + e);
    }
}

您可以嘗試過濾此類不允許的字符。

ValidationUtil.setTextValidation(etClientMiddleName, "[^a-zA-Z ]", 50);

@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
    String data = source.toString().substring(start, end);
    return data.replaceAll(mRegExp,"");
}

我更改了EditText的輸入類型

android:inputType="textVisiblePassword"

還嘗試了以下但沒有為我工作

android:inputType="textFilter|textNoSuggestions"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM