private String JID,laststring; private int lastcount; EditText edt=(EditText)findViewById(R.id.edt); edt.addTextChangedListener(watcher); private TextWatcher watcher=new TextWatcher() { @Override public void onTextChanged(CharSequence s,int start,int before,int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s,int count,int after) { // 获取输入前的光标位置以及内容 laststring=edt.getText().toString(); lastcount=edt.getSelectionStart(); } @Override public void afterTextChanged(Editable s) { // 获取输入后内容 String strorder=edt.getText().toString(); if (strorder.length()!=0&&laststring.length()<strorder.length()) { //限制只输入汉字,字母以及数字的正则表达式 String regEx="^[\u4e00-\u9fa5a-zA-Z0-9]+$"; Pattern p = Pattern.compile(regEx); //截取输入的字符串 String newinput=strorder.substring(lastcount,strorder.length()-laststring.length()+lastcount); Matcher m = p.matcher(newinput); if (!m.matches()) { edt.setText(laststring); edt.setSelection(edt.length()); System.out.println("只能输入汉字,字母以及数字"); } } } };
可以编写不同的正则表达式来限制其他的输入内容!