如何强制用户输入带有符号的密码?

时间:2012-05-17 17:10:10

标签: java android design-patterns matcher

                if (password1.length() >= 15){          
                    final String PasswordPattern = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[0-9A-Za-z]{15,}$";

                    Pattern pattern = Pattern.compile(PasswordPattern);
                    Matcher matcher = pattern.matcher(password1);   

                    if(matcher.matches() == true){                      

                        if (password1.equals(password2)){
                            SavePreferences(password1.toString());
                            //Intent intent = new Intent(LockAppActivity.this, ScreenLockActivity.class);
                            Intent intent = new Intent(LockAppActivity.this, PhoneNumActivity.class);
                            startActivity(intent);
                        }
                        else{
                            pass1.setText("");
                            pass2.setText("");
                            Toast.makeText(LockAppActivity.this,"Both passwords are not equal!",Toast.LENGTH_SHORT).show();
                        }
                    }

我希望用户输入至少包含15个字符的密码,这些字符必须包含大写和小写字母,数字和符号。但我只知道如何使用Capital和Small字母和数字创建模式......如何在模式中包含所有符号...请检查我的模式代码部分...谢谢

3 个答案:

答案 0 :(得分:2)

您可以添加(?=.*(\W|_))部分来检查除字母数字(A-Z,a-z,0-9)符号之外的任何内容。或者,您可以指定一组符号字符,如(?=.*[\.\*])。如果这样做,请在具有正则表达式功能的每个字符之前使用反斜杠替换[]的所有内容以包含所有允许的字符。 (该示例显示了一个允许两个字符的部分.*。)

然后,您需要在顶部更新计算出现次数的部分。由于我们现在处理所有字符,我们可以将[0-9A-Za-z]替换为.,并留下:^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*(\W|_)).{15,}$。将单个\替换为两个\\,因为您将其放在Java字符串中。

请记住,Android键盘可能会有所不同,因此并非所有键盘都具有相同的符号。

答案 1 :(得分:1)

它只是你想要的例子。我在我的项目中使用struts完成了这个。它满足了你的需求。您还可以添加更多条件。看到这个...... http://www.asciitable.com/

 if (getNewpassword() != null) {
                    int s;
                    for (int i = 0; i < getNewpassword().length(); i++) {
                        s = (int) getNewpassword().charAt(i);
                        if ((s>=33 && s<=64 )&&(s>=127&&s<=65)) {
                        }
    else
    {
                            errors.add("newpassword1", new ActionMessage("errors.notpwd", "must contains A-Z,a-z and any symbol"));
    }
                    }
                }

答案 2 :(得分:0)

您可能会发现this回答另一个有用的问题。我不确定这个密码约束是否与你的密码约束完全相同,但它似乎足够相似,可能有所帮助。

https://stackoverflow.com/a/3721953/339428