Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制用户输入带有符号的密码?_Java_Android_Design Patterns_Matcher - Fatal编程技术网

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

Java 如何强制用户输入带有符号的密码?,java,android,design-patterns,matcher,Java,Android,Design Patterns,Matcher,我希望用户输入至少15个字符的密码,必须由大写和小写字母、数字和符号组成。但我只知道如何创建大写字母、小写字母和数字的图案。。。如何在图案中包含所有符号。。。请检查我的模式代码部分。。。谢谢您可能会发现另一个问题的答案很有用。我不确定这个密码约束是否与您的完全相同,但它似乎非常相似,可能会有所帮助 if (password1.length() >= 15){ final String Passwor

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

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

                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值并进行检查。如果值位于条件之间,则会提交其他错误或将显示给用户