2

有人可以指出我在 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() 执行此操作,它只会比较上述字符串中的一个条件。

4

2 回答 2

0

试试这个:

String pass_pattern  = "^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])[^\\W_]{4,10}$";
于 2013-05-29T12:09:58.143 回答
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;
}
于 2013-05-29T12:12:49.693 回答