程序允许用户输入表示密码的字符串并确定其是否有效。密码长度必须为8个字符,包括一个小写字母,一个大写字母,一个数字和一个符号(例如!@#)。
输出应为:
Entered Password: (whatever the user entered)
Verdict: (either valid or invalid)
到目前为止,这是我的代码:
import java.util.*;
public class PasswordTest
{
public static void main(String[]args)
{
Scanner input = new Scanner (System.in);
System.out.print("Enter a password: ");
String Pass = input.next();
System.out.println("Entered Password: " + Pass);
if (Pass.length() < 8)
{
System.out.println ("Verdict: Invalid");
}
if (Pass.length() >= 8)
{
System.out.println ("Verdict: Valid");
{
}
}
我不确定如何解决这个问题。我假设我需要一个循环语句来确定它是否包含大写和小写字母以及数字和符号。
答案 0 :(得分:1)
您可以使用正则表达式:
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$
实现:
import java.util.regex.*;
public class passwordvalidation {
public static void main(String[] args) {
String passwd = "aaZZa44@";
String pattern = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{5,10}";
System.out.println(passwd.matches(pattern));
}
}
在此stackoverflow帖子中查找更多内容:Regex explained
答案 1 :(得分:0)
不需要循环,而是使用||
和&&
运算符,这样只需要1 if语句。