Regex Patter на EditTextby с использованием setTextValidation не работает должным образом - PullRequest
0 голосов
/ 23 марта 2019

Я использую setTextValidation для EditText с шаблоном регулярных выражений, но он не работает должным образом.Мне нужны только алфавиты и пробел для поля, но когда я нажимаю цифры, он копирует другие алфавиты, набранные ранее.

        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);
    }
}

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Я изменил тип ввода моего EditText

android:inputType="textVisiblePassword"

Также попробовал следующее, но у меня не получилось

android:inputType="textFilter|textNoSuggestions"
0 голосов
/ 25 марта 2019

Вы можете попробовать отфильтровать запрещенные символы следующим образом.

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,"");
}
...