用于在Android中验证EditText的正则表达式

时间:2013-11-19 03:33:52

标签: java android regex validation

我正在尝试验证TextView,以便它只能包含字母和。

到目前为止,我所做的是它不允许空格而且不能留空,所以如何继续不允许数字和特殊字符除外。

              if (PatientInitials.getText().toString().equals(""))
              {
                  final Toast toast = Toast.makeText(getApplicationContext(), "Please enter the patient initials.", Toast.LENGTH_SHORT);
                    toast.show();
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable() {
                       @Override
                       public void run() {
                           toast.cancel(); 
                       }
                }, 3000);
              }
              else if (PatientInitials.getText().toString().matches(".*([ \t]).*"))
              {
                  final Toast toast = Toast.makeText(getApplicationContext(), "Patient initials cannot contain spaces.", Toast.LENGTH_SHORT);
                    toast.show();
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable() {
                       @Override
                       public void run() {
                           toast.cancel(); 
                       }
                }, 3000);
              }
                      //Below doesn't work
              else if (PatientInitials.getText().toString().matches("/^[A-z]+$/"))
              {
                  final Toast toast = Toast.makeText(getApplicationContext(), "Patient initials cannot contain numbers and special characters.", Toast.LENGTH_SHORT);
                    toast.show();
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable() {
                       @Override
                       public void run() {
                           toast.cancel(); 
                       }
                }, 3000);

2 个答案:

答案 0 :(得分:0)

试试这个:

            EditText state = (EditText) findViewById(R.id.txtState);
            Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
            Matcher ms = ps.matcher(state.getText().toString());
            boolean bs = ms.matches();
            if (bs == false) {
                if (ErrorMessage.contains("invalid"))
                    ErrorMessage = ErrorMessage + "state,";
                else
                    ErrorMessage = ErrorMessage + "invalid state,";
            }

希望这有帮助。

答案 1 :(得分:0)

你有没有看过android:digits先发制人地将某些角色列入白名单?

另请参阅:https://stackoverflow.com/a/6082975/452383