📜  如何在Java使用正则表达式验证密码

📅  最后修改于: 2021-09-08 12:42:28             🧑  作者: Mango

给定密码,任务是在正则表达式的帮助下验证密码。
如果满足以下所有约束,则认为密码有效:

  • 它包含至少 8 个字符,最多 20 个字符。
  • 它至少包含一位数字。
  • 它至少包含一个大写字母。
  • 它至少包含一个小写字母。
  • 它至少包含一个特殊字符,其中包括!@#$%&*()-+=^
  • 它不包含任何空格。

例子:

方法:这个问题可以通过使用正则表达式来解决。

  1. 获取密码。
  2. 创建一个正则表达式来检查密码是否有效,如下所述:

    在哪里:

    • ^表示字符串的起始字符。
    • (?=.*[0-9])表示一个数字必须至少出现一次。
    • (?=.*[az])表示小写字母必须至少出现一次。
    • (?=.*[AZ])表示必须至少出现一次的大写字母。
    • (?=.*[@#$%^&-+=()]表示必须至少出现一次的特殊字符。
    • (?=\\S+$)整个字符串不允许有空格。
    • .{8, 20}表示至少 8 个字符,最多 20 个字符。
    • $代表字符串。
  3. 将给定的字符串与正则表达式匹配。在Java,这可以使用 Pattern.matcher() 来完成。
  4. 如果字符串与给定的正则表达式匹配,则返回 true,否则返回 false。

下面是上述方法的实现:

// Java program to validate
// the password using ReGex
  
import java.util.regex.*;
class GFG {
  
    // Function to validate the password.
    public static boolean
    isValidPassword(String password)
    {
  
        // Regex to check valid password.
        String regex = "^(?=.*[0-9])"
                       + "(?=.*[a-z])(?=.*[A-Z])"
                       + "(?=.*[@#$%^&+=])"
                       + "(?=\\S+$).{8,20}$";
  
        // Compile the ReGex
        Pattern p = Pattern.compile(regex);
  
        // If the password is empty
        // return false
        if (password == null) {
            return false;
        }
  
        // Pattern class contains matcher() method
        // to find matching between given password
        // and regular expression.
        Matcher m = p.matcher(password);
  
        // Return if the password
        // matched the ReGex
        return m.matches();
    }
  
    // Driver Code.
    public static void main(String args[])
    {
  
        // Test Case 1:
        String str1 = "Geeks@portal20";
        System.out.println(isValidPassword(str1));
  
        // Test Case 2:
        String str2 = "Geeksforgeeks";
        System.out.println(isValidPassword(str2));
  
        // Test Case 3:
        String str3 = "Geeks@ portal9";
        System.out.println(isValidPassword(str3));
  
        // Test Case 4:
        String str4 = "1234";
        System.out.println(isValidPassword(str4));
  
        // Test Case 5:
        String str5 = "Gfg@20";
        System.out.println(isValidPassword(str5));
  
        // Test Case 6:
        String str6 = "geeks@portal20";
        System.out.println(isValidPassword(str6));
    }
}
输出:
true
false
false
false
false
false

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live