Mike 发表于 2021-7-11 16:05:52

edditText正则限制特殊符号输入

  这个问题,以前没用遇到过,今天还是搞了许久才研究出来,看起来比较简单,步入正题
  先写出这样一个方法
  // 过滤特殊字符
public static String stringFilter(String str) throws PatternSyntaxException {
String regEx = "[^a-zA-Z0-9@_.\u4E00-\u9FA5]";//这里可以写出要过滤的符号或者其他,添加在里面就可以了,
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}

  //然后写出控件的文本监听事件
  etUsername.addTextChangedListener(new TextWatcher() {


@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
  //在这里调用
String editable = etUsername.getText().toString();
String str = stringFilter(editable.toString());
if (!editable.equals(str)) {
etUsername.setText(str);
// 设置新的光标所在位置
etUsername.setSelection(str.length());
}


}


@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub


}

  @Override
public void afterTextChanged(Editable arg0) {
  
}
});

  这个就完成了,

  
文档来源:51CTO技术博客https://blog.51cto.com/u_14397532/3035633
页: [1]
查看完整版本: edditText正则限制特殊符号输入