Search code examples
androidregexuser-inputvalidationandroid-edittext

Allow only selected charcters based on regex in an EditText


I want to allow users only to type certain characters based on the a regex in my android applications. How do I achieve it?


Solution

  • Used a TextWatcher as @Matt Ball suggested.

    @Override
    public void afterTextChanged(Editable s) {
          String text = s.toString();
          int length = text.length();
    
          if(length > 0 && !Pattern.matches(PATTERN, text)) {
               s.delete(length - 1, length);
          }
    }
    

    Edit Although the TextWatcher works, it would be cleaner to use an InputFilter. Check this example.