Java 如何强制用户输入带有符号的密码?
我希望用户输入至少15个字符的密码,必须由大写和小写字母、数字和符号组成。但我只知道如何创建大写字母、小写字母和数字的图案。。。如何在图案中包含所有符号。。。请检查我的模式代码部分。。。谢谢您可能会发现另一个问题的答案很有用。我不确定这个密码约束是否与您的完全相同,但它似乎非常相似,可能会有所帮助Java 如何强制用户输入带有符号的密码?,java,android,design-patterns,matcher,Java,Android,Design Patterns,Matcher,我希望用户输入至少15个字符的密码,必须由大写和小写字母、数字和符号组成。但我只知道如何创建大写字母、小写字母和数字的图案。。。如何在图案中包含所有符号。。。请检查我的模式代码部分。。。谢谢您可能会发现另一个问题的答案很有用。我不确定这个密码约束是否与您的完全相同,但它似乎非常相似,可能会有所帮助 if (password1.length() >= 15){ final String Passwor
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();
}
}
您可能会发现另一个问题的答案很有用。我不确定这个密码约束是否与您的完全相同,但它似乎非常相似,可能会有所帮助
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();
}
}
您可以添加
(?=.*(\W |)))
部分来检查字母数字(A-Z,A-Z,0-9)符号以外的任何符号。或者,您可以指定一组符号字符,如(?=.[\.\*])
。如果这样做,请将[]
的内容替换为您希望允许的所有字符,在每个具有正则表达式函数的字符之前使用反斜杠。(该示例显示了允许两个字符的部分,
和*
)
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();
}
}
然后,您需要更新统计出现次数的部分。由于我们现在处理的是所有字符,我们可以将[0-9A-Za-z]
替换为
,剩下的是:^(?=.[0-9])(?=.[A-z])(?=.[A-z])(?=.[A-z])(?=.[W|))){15,}$
。将单个\
替换为两个\\
,因为您将其放在Java字符串中
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();
}
}
请记住,Android键盘可能会有所不同,因此并非所有键盘都保证具有相同的符号。您可以添加
(?=.*(\W|)))
部分,以检查除字母数字(A-Z,A-Z,0-9)符号以外的任何符号。或者,您可以指定一组符号字符,如(?=.[\.\*])
。如果这样做,请将[]
的内容替换为您希望允许的所有字符,在每个具有正则表达式函数的字符之前使用反斜杠。(该示例显示了允许两个字符的部分,
和*
)
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();
}
}
然后,您需要更新统计出现次数的部分。由于我们现在处理的是所有字符,我们可以将[0-9A-Za-z]
替换为
,剩下的是:^(?=.[0-9])(?=.[A-z])(?=.[A-z])(?=.[A-z])(?=.[W|))){15,}$
。将单个\
替换为两个\\
,因为您将其放在Java字符串中
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();
}
}
请记住,Android键盘可能会有所不同,因此并非所有键盘都保证具有相同的符号。这只是您想要的示例。我已经在我的项目中使用struts完成了这项工作。它满足了你的需要。您还可以添加更多条件。看到这个了吗
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();
}
}
if(getNewpassword()!=null){
int-s;
对于(int i=0;i 如果((s>=33&&s=127&&s这正是您想要的示例。我在项目中使用struts完成了此操作。它满足了您的需要。您还可以添加更多条件。也可以查看此
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();
}
}
if(getNewpassword()!=null){
int-s;
对于(int i=0;i 如果(s>=33 & & s=127 & & be更清楚地表示“符号”),你认为什么是符号而不是什么?Unicode包含了很多“符号”。…安卓手机键盘上可用的所有符号与回答问题无关,但是:至少15个字符的密码,带有大写、小写、数字和符号?大概是手机,输入所有这些信息(至少)有点乏味?我想有些用户可能不喜欢这个要求。我正在开发一个安全应用程序,因此必须使用一个强大且安全的密码。不要浪费时间试图强制usesr输入有趣的字符,因为它们对密码的安全性影响很小。更重要的是密码长度。注意再清楚地看“符号”,你认为什么是符号,什么不是符号?Unicode包含很多“符号”……所有的符号在Android手机上都不适用于回答问题,而是:一个15字符的最小密码,大写,小写,数字和符号?(至少)有点乏味?我想有些用户可能不喜欢这个要求。我正在开发一个安全应用程序,因此必须使用一个强大且安全的密码。不要浪费时间试图强制usesr输入有趣的字符,因为它们对密码的安全性影响很小。更重要的是密码长度。提示:如果要在正则表达式中输入\mark,则必须将其键入\\in String“^(?=.[0-9])(?=.[A-Z])(?=.[A-Z])(?=.[^\W\u])[0-9A-Za-Z]{15,}$”我发现此密码模式有错误,请尝试“^(?=.[0-9])(?=.[A-Z])(?=.[A-Z])(?=.[A-Z])(?=.[A-Z])(?=.[A-Z])(?=.[\W\W|)){.15,$”。提示:如果要在正则表达式中输入\mark我的密码模式有错误,请键入一个字符串([[0-Z])(?=.[a-z])(?=.[^\W_])[0-9A-Za-z]{15,}$“如果此密码模式出现错误,请尝试”^(?=.[0-9])(?=.[a-z])(?=.[a-z])(?=.[W|z])(?=.[W|15,}$”。s变量将逐个字符获取十进制ASCII值并进行检查。如果值位于条件之间,则会提交其他错误。s变量将逐个字符获取十进制ASCII值并进行检查。如果值位于条件之间,则会提交其他错误或将显示给用户