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字母和数字创建模式......如何在模式中包含所有符号...请检查我的模式代码部分...谢谢
答案 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回答另一个有用的问题。我不确定这个密码约束是否与你的密码约束完全相同,但它似乎足够相似,可能有所帮助。