Android EditText使用正则表达式进行输入过滤
近期在一个项目中用到修改密码这个功能,不过对于密码的输入,我们不希望用户输入汉字或者特殊字符,所以我们需要对用户进行输入的输入框进行过滤,下面是一个对EditText进行过滤的小代码片段:
1.首先给Edittext 添加一个TextWatcher,当然这个TextWatcher我们是要自己写的,核心功能也在这个类中
[java]
mOldPwdET.addTextChangedListener(new SearchWather(mOldPwdET ));
2.下面就是这个自定义的TextWatcher
[java]
class SearchWather implements TextWatcher{
//监听改变的文本框
private EditText editText;
/**
* 构造函数
*/
public SearchWather(EditText editText){
this.editText = editText;
}
@Override
public void onTextChanged(CharSequence ss, int start, int before, int count) {
String editable = editText.getText().toString();
String str = stringFilter(editable.toString());
if(!editable.equals(str)){
editText.setText(str);
//设置新的光标所在位置 www.zzzyk.com
editText.setSelection(str.length());
}
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
}
}
public static String stringFilter(String str)throws PatternSyntaxException{
// 只允许字母和数字
String regEx = "[^a-zA-Z0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
希望大家有什么更好的办法,可以分享一下,请大家多多指教。
作者 jamin0107
补充:移动开发 , Android ,