Android EditText 使用正则表达式进行输入过滤

        近期在一个项目中用到修改密码这个功能,不过对于密码的输入,我们不希望用户输入汉字或者特殊字符,所以我们需要对用户进行输入的输入框进行过滤,下面是一个对EditText进行过滤的小代码片段:

 

1.首先给Edittext 添加一个TextWatcher,当然这个TextWatcher我们是要自己写的,核心功能也在这个类中

 

mOldPwdET.addTextChangedListener(new SearchWather(mOldPwdET ));


 

2.下面就是这个自定义的TextWatcher

 

	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);
				//设置新的光标所在位置  
				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();     
	}  


 

希望大家有什么更好的办法,可以分享一下,请大家多多指教。

你可能感兴趣的:(android,String,正则表达式,regex)