使用 setText 验证的 EditText 上的正则表达式模式无法正常工作
Regex Patter on EditTextby using setTextValidationis not working properly
我在具有正则表达式模式的 EditText 上使用 setTextValidation,但它无法正常工作。我只需要字母表 & space 作为字段,但是当我按下数字时,它会复制之前输入的其他字母表。
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"
我在具有正则表达式模式的 EditText 上使用 setTextValidation,但它无法正常工作。我只需要字母表 & space 作为字段,但是当我按下数字时,它会复制之前输入的其他字母表。
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"