使用常规表达式的验证

时间:2013-05-29 12:05:21

标签: android regex matcher

有人能指出我在android中使用正则表达式(模式和匹配器具体)

String pass_pattern  = "^([A-Za-z0-9][A-Za-z0-9]{4,10})$";
b1= (Button)findViewById(R.id.button1);
    et1= (EditText)findViewById(R.id.editText1);

    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {    
            chek = et1.getText().toString();
            if(chek.equals(""))
            {
            Toast.makeText(getApplicationContext(), "Enter password",1000).show();
            }

            if(chek.matches(pass_pattern)) 
            {
                Toast.makeText(getApplicationContext(), "Valid pAssword",1000).show();
            }else {Toast.makeText(getApplicationContext(), "InvalidpAssword",1000).show();}

        }
    });

这是我目前的代码,我想检查用户是否输入了至少一个小写字母和至少一个大写字母和一个数字,长度应该是4-10个字符。

如果我通过.matches()执行此操作,它只会比较上述字符串中的一个条件。

2 个答案:

答案 0 :(得分:0)

试试这个:

String pass_pattern  = "^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])[^\\W_]{4,10}$";

答案 1 :(得分:0)

你可以在不使用正则表达式的情况下完成:

boolean lowerCase = false;
boolean upperCase = false;
boolean digit = false;
int length = password.length();
for (char c : password.toCharArray()) {
    if (Character.isUpperCase(c))
        upperCase = true;
    if (Character.isLowerCase(c))
        lowerCase = true;
    if (Character.isDigit(c))
        digit = true;
    if (lowerCase && upperCase && digit)
        break;
}